Ver Mensaje Individual
  #7  
Antiguo 31-05-2012
ajvdelphi ajvdelphi is offline
Registrado
NULL
 
Registrado: may 2012
Posts: 7
Reputación: 0
ajvdelphi Va por buen camino
Hola.
Me habían pasado hace tiempo este código, que no probé, y se supone que puede detectar cualquier aplicacion inclusive si se está ejecutando en otra máquina, habrá que probar


Hay que agregar 'TLHelp32' en el uses de tu form

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
 
  function IsRunnig (FicheroExe:string):boolean;
 
    function SacaExe(MangoW:HWND):string;
    {Obtiene el EXE de una tarea}
    {get EXE of a task}
    var 
      Datos    :TProcessEntry32;
      hID        Word;
      Snap     : Integer;
    begin 
      GetWindowThreadProcessId(MangoW,@hID);
      Snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
      try
        Datos.dwSize:=SizeOf(Datos);
        if(Process32First(Snap,Datos))then
        begin 
          repeat 
            if Datos.th32ProcessID=hID then 
            begin 
              Result:=StrPas(Datos.szExeFile);
              Break;
            end; 
          until not(Process32Next(Snap,Datos));
        end; 
      finally
        Windows.CloseHandle(Snap);
      end; 
    end; 
 
 
   function ObtieneVentanas(Mango: HWND;
            ACerrar: Pointer): Boolean; stdcall;
   begin 
     Result := True;
     {Mango es el handle de la tarea encontrada}
     {Si es el .EXE buscado, lo cierra}
     if SacaExe(Mango)=UpperCase( String(ACerrar^) )then
     begin 
       String(Acerrar^):='Encontrado';
     end; 
   end; 
 

  begin 
    EnumWindows( @ObtieneVentanas, Integer(@FicheroExe) );
    Result:=(FicheroExe='Encontrado');
  end; 
 
begin 
 if IsRunnig('C:\WINDOWS\NOTEPAD.EXE')
   then ShowMessage ('Ejecutandose/Running')
   else ShowMessage ('No Ejecutandose/Do not running');
end;

Espero te sirva, sino a seguir buscando!!!!

Saludos
Augusto
Responder Con Cita