Ver Mensaje Individual
  #1  
Antiguo 22-10-2015
briast briast is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 50
Reputación: 14
briast Va por buen camino
Detectar ejecución de aplicación en Terminal Server

Hola. Uso la siguiente función para detectar si un programa está ejectuándose en Windows. Recibe como parámetro el nombre del programa (.exe) y devuelve "true" si lo encuentra.

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 me surge el problema cuando el programa se ejecuta en una sesión de terminal server, ya que varios usuarios pueden estar usando el mismo programa y esta función detecta la ejecución del programa en todas las sesiones. Lo que necesito es que se limite sólo a mi sesión actual. ¿Hay alguna forma de hacerlo?
Gracias.
Un saludo
PD: no puse bien el título del post y luego no me deja cambiarlo. Sería "Detectar ejecución de aplicación en Terminal Server".

Última edición por Casimiro Notevi fecha: 22-10-2015 a las 18:20:09. Razón: No puse bien el título del post
Responder Con Cita