Hola. Utilizo el código siguiente en Delphi 5 para detectar una aplicación en ejecución a partir del nombre del ejecutable:
Código Delphi
[-]
function Ejecutandose(FileName:String):boolean;
var
ContinueLoop:BOOLean;
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
flag:boolean;
begin
flag:=false;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop)<>0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))=UpperCase(FileName))
or (UpperCase(FProcessEntry32.szExeFile)=UpperCase(FileName))) then
begin
Flag:=true;
break;
end
else ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
Result:=flag;
end;
Esto funciona bien, pero cuando la aplicación se ejecuta en Terminal Server, entonces deja de funcionar y me detecta en ejecución la misma aplicación pero en otras sesiones, mientras que en la actual no lo está.
¿Cómo podría cambiar el código para que funcione bien en la sesión de TS? ¿sería mejor usar otro código para delphi 5?
Gracias.