Ver Mensaje Individual
  #2  
Antiguo 05-04-2005
Toñico Toñico is offline
Miembro
 
Registrado: ene 2005
Posts: 50
Reputación: 20
Toñico Va por buen camino
Hola, creo que este código te servirá. Está escrito en el create del formulario. He usado una variable boolean global que me indica si existe o no el programa.

Código:
  
Código Delphi [-]
 
procedure TFormulario.FormCreate(Sender: TObject);
     function SacaExe(MangoW:HWND):string;
     {Obtiene el EXE de una tarea}
     {get EXE of a task}
     var
         Datos  :TProcessEntry32;
         hID  :DWord;
         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;
         Nada: Pointer): Boolean; stdcall;
    var
        sTemp:string;
    begin
        Result := True;
        {Mango es el handle de la tarea encontrada}
        {Añadimos el .EXE si no está ya añadido...}
        sTemp:=SacaExe(Mango);
        If sTemp = 'Nombre_del_ejecutable.exe' then bExistePrograma := True;
    end;
begin
    bExistePrograma := False;
    EnumWindows( @ObtieneVentanas, 0 );
end;
Un saludo.
Responder Con Cita