14 junio 2007

Cómo ocultar una aplicación

Vamos a ver como hacer que una aplicación cualquiera hecha en Delphi quede oculta de la barra de tareas de Windows y del escritorio. Sólo podrá verse ejecutando el administrador de tareas en la pestaña Procesos.

Para ello vamos a añadir en el evento OnCreate del formulario principal de nuestra aplicación lo siguiente:

procedure TFPrincipal.FormCreate(Sender: TObject);
begin
// Hacemos que el formulario sea invisible poniendolo en la
// esquina superior izquierda, tamaño cero y aplicación invisible
BorderStyle := bsNone;
Left := 0;
Top := 0;
Width := 0;
Height := 0;
Visible := False;
Application.Title := '';
Application.ShowMainForm := False;

// Lo ocultamos de la barra de tareas
ShowWindow( Application.Handle, SW_HIDE );
SetWindowLong( Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or
WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
end;

Esto nos puede ser util para crear programas residentes ocultos al usuario para administración de copias de seguridad, reparación automática de bases de datos y envío de mailing automátizado.

Pruebas realizadas en Delphi 7.

5 comentarios:

jf dijo...

Funciona perfectamente. Me ha sido muy útil.

Muchas gracias.

cadetill dijo...

Hay que tener presente que este código sólo funciona hasta la versión 2006 de Delphi. Para que funcione a partir de la versión 2007 hay que ir al .dpr y poner a false el Application.MainFormOnTaskbar. Luego ya puede usarse

// para ocultar
ShowWindow( Application.Handle, SW_HIDE );

// para mostrar
ShowWindow(Application.Handle, SW_SHOW);

Nos leemos
cadetill

Administrador dijo...

Muchas gracias por la información.

Jesús Palenzuela dijo...

Gracias
Estoy creando un programa de Control Paterno para mi hija y me viene perfecto.

Jesús Palenzuela dijo...

Gracias
Estoy creando un programa de Control Paterno para mi hija y me viene perfecto.

Publicidad