Ver Mensaje Individual
  #1  
Antiguo 14-02-2008
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Reputación: 21
sur-se Va por buen camino
Detección aplicaciones en ejecución

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.
Responder Con Cita