Delphi - quitar mi programa de la lista de tareas

 
Vista:

quitar mi programa de la lista de tareas

Publicado por Reynier Reyes Zayas (3 intervenciones) el 10/08/2006 23:32:21
Saludos,

Necesito saber cómo es el código para quitar mi aplicación de la lista de tareas del administrador de tareas de windows, estaré muy agradecido por su ayuda,

gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:quitar mi programa de la lista de tareas

Publicado por Dr Juzam (821 intervenciones) el 11/08/2006 06:00:54
A ver si esto te sirve:

http://www.q3.nu/trucomania/truco.cgi?186&esp

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:quitar mi programa de la lista de tareas

Publicado por Reynier Reyes Zayas (3 intervenciones) el 15/08/2006 03:26:58
Hola Dr Juzan, Conozco de la existencia del sitio trucomania, pero yo no tengo acceso a esa página, ¿me puedes explicar de otra manera?, si puedes te lo agradeceré.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:quitar mi programa de la lista de tareas

Publicado por Dr Juzam (821 intervenciones) el 15/08/2006 17:30:04
{Copio y pego de la página del truco}
Primero, debemos registar el tipo de la funcion que queremos registrar, para que Delphi controle bien sus parámetros.
Lo haremos en el interface de la form:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

{Esta linea/This Line}
type
TRegisterService = function (dwProcessID, dwType:DWord):Dword;stdcall;

Ahora, necesitamos una variable global a la form para guardar la direccion de la procedure.
Por ejemplo, la incluiremos en la parte private de la form:

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
RegisterServiceProcess: TRegisterService;
public
{ Public declarations }
end;

Ahora, necesitamos asignar la direccion a la procedure antes de poder usarla.
Lo haremos en el evento OnCreate de la form. Fijate que usaremos una función que comprueba si la procedure existe o no, generando una excepcion (que podemos capturar o dejarla pasar) si la procedure no existiese...:

procedure TForm1.FormCreate(Sender: TObject);

function AsignaProcedure(EnQueDll,Procedimiento: string):TFarProc;
var
MangoProc,
MangoLib : THandle;

begin
Result:=nil;
MangoLib:=GetModuleHandle(Pchar(EnQueDll));
if MangoLib <> 0 then
Result:=GetProcAddress(MangoLib,Pchar(Procedimiento));

{Si la DLL o la procedure no esta disponible... error}
if (MangoLib=0) or (Result=nil) then
raise Exception.create( Procedimiento+
' en '+
EnQueDll+
' no encontrado.');
end;

begin
try
@RegisterServiceProcess:=AsignaProcedure( 'KERNEL32.DLL',
'RegisterServiceProcess');
except
ShowMessage('Error, funcion RegisterServiceProcess no encontrada...');
end;
end;

Si te fijas, en este ejemplo capturo la excepcion, dando el mensaje que a mi me da la gana. Si quitase el 'ShowMessage' podria hacerla silenciosa... es decir, que el usuario ni se enteraría de que existe ese problema. Tu mismo.
Es conveniente que nos vayamos acostumbrando a la manipulación de errores con excepciones, al final te quitan mucho trabajo.

Finalmente... nos queda el truco en sí, es decir... llamar a la funcion que tanto currelo nos ha dado declarar:

procedure TForm1.Button1Click(Sender: TObject);
begin
{Ocultar la aplicacion.../Hide the application...}
if Assigned(RegisterServiceProcess) then
RegisterServiceProcess(GetCurrentProcessID,1);
end;

Si te fijas, utilizo el If Assigned para asegurarme de que fué declarada, para evitar sorpresitas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:quitar mi programa de la lista de tareas

Publicado por Reynier Reyes Zayas (3 intervenciones) el 17/08/2006 20:15:54
Gracias por su ayuda, estoy muy agradecido.

Saludos, Reynier
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar