Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ejecutar programa al inicio de Windows 7 (https://www.clubdelphi.com/foros/showthread.php?t=79658)

Drakyto 26-07-2012 21:56:32

Ejecutar programa al inicio de Windows 7
 
Estimados amigos del foro, a tiempo de saludarles muy cordialmente, quiero realizar una consulta; tengo una aplicación desarrollada en Delphi (obviamente) y lo que quiero es que la misma se ejecute cuando se inicie el sistema, en este caso, es Windows 7. ¿Cómo puedo hacerlo dentro el código de la aplicación?
Gracias de antemano.
Drakyto :D

roman 26-07-2012 22:49:04

Bueno, no puedes hacerlo dentro del código de la aplicación puesto que la aplicación aún no corre, ¿no crees? ;)

Para que tu aplicación corra desde el inicio puedes poner una entrada en el registro de windows, por ejemplo, en

Código:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Ahí pones una llave cuyo valor sea la ruta completa a tu ejecutable.

// Saludos

ecfisa 26-07-2012 22:50:29

Hola Drakyto.

Proba de este modo:
Código Delphi [-]
...
implementation

uses Registry;

const
  CVALUE = 'MiAplicacion';

procedure AutoRun(Execute: Boolean);
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    if Execute then
    begin
      OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True);
      WriteString(CVALUE, ExtractFilePath(Application.ExeName) +
          ExtractFileName(Application.ExeName))
    end
    else
    begin
      OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False);
      DeleteValue(CVALUE);
    end;
  finally
    CloseKey;
    Free;
  end;
end;

Llamada ejemplo:
Código Delphi [-]
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  AutoRun(CheckBox1.Checked);
end;

Saludos.

Edito: No había visto la respuesta de roman, pero creo que es la misma idea.

ecfisa 27-07-2012 00:01:12

Hola de nuevo.

Casí lo olvido... Para no dejar las cosas a la mitad, al ejemplo, abría que agregarle:
Código Delphi [-]
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False) then
      CheckBox1.Checked:= ValueExists(CVALUE)
  finally
    Free;
  end;
end;
...

Saludos.

roman 27-07-2012 05:21:35

Hola ecfisa,

Donde dice

Código Delphi [-]
WriteString(CVALUE, ExtractFilePath(Application.ExeName) + ExtractFileName(Application.ExeName))

¿no bastaría con poner esto?

Código Delphi [-]
WriteString(CVALUE, Application.ExeName)

// Saludos

ecfisa 27-07-2012 09:25:04

Cita:

¿no bastaría con poner esto?
Hola roman.

Si, tiene el mismo resultado.

Saludos.


La franja horaria es GMT +2. Ahora son las 02:48:52.

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