Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Saber si se esta ejecutando un programa externo (https://www.clubdelphi.com/foros/showthread.php?t=19981)

jcaballeroo 01-04-2005 19:36:25

Saber si se esta ejecutando un programa externo
 
Hola, necesito una función que me diga si un programa externo esta abierto, ha de funcionar en cualquier S.O. Windows (NT/95/98/ME/XP/2000/2003AV).

Toñico 05-04-2005 18:01:58

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.


La franja horaria es GMT +2. Ahora son las 13:25:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi