PDA

Ver la Versión Completa : Detectar ejecución.


piccolo2101
23-12-2005, 09:39:09
Hola,

Estoy creando un update para una aplicación que estoy desarrollando para que las empresas que lo usan puedan actualizar la versión de forma automática desde internet. Lo que me interesa en este momento es saber si la aplicación está en ejecución y en ese caso cerrarla para iniciar la descarga del nuevo fichero y sustituirlo por el antiguopara volverlo a arrancar. El update es una parte externa de la aplicación, es decir, no es una opción del programa sino un ejecutable en sí.


Un saludo y gracias.

epuigdef
23-12-2005, 10:48:00
Tengo este código que de hecho lo que hace es matar un proceso por su nombre; Puedes cambiar el terminateProcess por lo que te interese en tu caso.


Edu



procedure MatarProceso(FileName:String);
var
ContinueLoop:BOOL;
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
const
PROCESS_TERMINATE=$0001;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop)<>0 do
begin
if FProcessEntry32.szExeFile=FileName then
TerminateProcess( OpenProcess(PROCESS_TERMINATE,BOOL(0),
FProcessEntry32.th32ProcessID),0);
ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;