Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Cargar aplicación al inicio de Windows (https://www.clubdelphi.com/foros/showthread.php?t=69175)

Drakyto 30-07-2010 21:13:19

Cargar aplicación al inicio de Windows
 
Espero este hilo esté ubicado en el lugar correcto.

Quisiera saber si hay alguna manera fácil de cargar mi aplicación en Delphi cuando se inicia windows.

Gracias de antemano.

Caral 30-07-2010 21:15:57

Hola
Lo mas facil es colocar un acceso directo al exe en el directorio de inicio de windows.
Saludos

delphi.com.ar 30-07-2010 21:17:06

http://www.clubdelphi.com/foros/show...86&postcount=2


Saludos!

bosster_018 31-07-2010 03:07:52

Esta pregunta ha sido contestada varias veces
 
Concuerdo con lo que te dijo Delphi.com.ar y para aumentar un poco la respuesta... Puedes anotar tu programa en el inicio del registro de Windows XP (ojo: sólo Windows XP, debes averiguar en Windows Vista y 7)

Aquí tengo un pequeño ejemplo que lo vi hace tiempo en el clubDelphi y que lo tengo guardado en mi carpetita de "Ejemplos Delphi" (uno puede necesitar estos ejemplos algún día :rolleyes:)

Cita:

Primero coloca un CheckBox en tu formulario, luego crea un procedimiento para escribir en el registro de Windows Xp.
Luego agrega "Registry" en las Uses de la unidad
Código Delphi [-]
Uses
   Registry;

Y escribes el código

Código Delphi [-]
//Lee y escribe en el Registro de Windows Xp
procedure TForm1.Regedit(run:byte; Nombre:string);
var
    Registro:TRegistry;
begin
  Registro:=TRegistry.create;
  Registro.RootKey:=HKEY_LOCAL_MACHINE;
    case run of
      1: if Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run\',FALSE) then
            Registro.WriteString(Nombre, ParamStr(0));
      0: if Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run\',FALSE) then
            Registro.DeleteValue(Nombre);
    end;
    Registro.Destroy;
end;

Cita:

Después en el CheckBox realizas la llamada al procedimiento:
Código Delphi [-]
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
    Regedit(1, 'NombrePrograma')
  else
    Regedit(0, 'NombrePrograma');
end;
Cita:

Donde el valor de "1" sirve para escribir en el registro el autoinicio de tu programa al encender Windows Xp.
Y el valor "0" borra el registro añadido por el programa (desactiva)
Cita:

Si quieres hacer un programa donde el Usuario controle el autoinicio de tu programa (active y desactive) puedes agregar otro procedimiento para que el programa (checkBox) "averigüe" si ya está escrito el autoinicio en el Registro de Windows Xp.

Con este procedimiento hará que tu checkBox esté marcado si ya existe el registro, si no el checkBox estará desmarcado:
Código Delphi [-]
procedure TForm1.AveriguarInicio(nombre:string);
var
  Registro : TRegistry;
begin
  Registro:=TRegistry.create;
  Registro.RootKey:=HKEY_LOCAL_MACHINE;
  Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',true);

    if Registro.ValueExists(nombre)= true then
      CheckBox1.Checked:= true
    else
      CheckBox1.Checked:= false;

  Registro.Destroy;
end;

Cita:

Y en el FormCreate haces la llamada al procedimiento:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  AveriguarInicio('NombrePrograma');
end;

Creo que me salió muy larga mi respuesta :p
¡Seguro que nadie lo leerá!

Saludos!

Lord Delfos 31-07-2010 16:27:53

Honestamente, creo que la mejor manera es también la más básica, que es poner un acceso directo en Menú Inicio > Inicio del usuario.

Esto es por tres cosas.

1) El usuario sabe qué se está corriendo al inicio.
2) Es fácil de borrar.
3) No te metés con el registry, cosa que puede ser peligrosa si uno no tiene cuidado.

Es uno opinión, nada más.


Código Delphi [-]
uses ShlObj, ComObj, ActiveX;

function RutaCarpetaEspecial(Carpeta: Cardinal): string;
var path: array [0..MAX_PATH] of char;
begin
  ShGetSpecialFolderPath(0,@path[0],Carpeta,false(*true crea la carpeta *)) ;
  Result:= path;
end;


//Sacado de Trucomanía: www.trucomania.org/trucomania
procedure CreaLnk(Exe, Argumentos, DirTrabajo, NombreLnk, DirDestino: string);
var Objeto: IUnknown;
    UnSlink: IShellLink;
    FicheroP: IPersistFile;
    WFichero: WideString;
begin
  Objeto := CreateComObject(CLSID_ShellLink);
  UnSlink := Objeto as IShellLink;
  FicheroP := Objeto as IPersistFile;
  with UnSlink do
    begin
    SetArguments( PChar(Argumentos) );
    SetPath( PChar(Exe) );
    SetWorkingDirectory( PChar(DirTrabajo) );
    end;
  WFichero := DirDestino + '\' + NombreLnk + '.lnk';
  FicheroP.Save(PWChar(WFichero),False);
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  CreaLnk( Application.ExeName,
           '',
           ExtractFilePath(Application.ExeName),
           'Mi programa',
           RutaCarpetaEspecial(CSIDL_STARTUP));
end;


La franja horaria es GMT +2. Ahora son las 04:47:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi