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)
-   -   Monitorear aplicacion desde delphi (https://www.clubdelphi.com/foros/showthread.php?t=78844)

gmendoza5426 21-05-2012 00:32:49

Monitorear aplicacion desde delphi
 
Hola a todos.
Alguien me puede ayudar por favor para poder consultar desde delphi si una maquina que esta en mi red tiene o no ejecutando una aplicacion en particular, necesito obtener todas las maquinas que tienen ejecutando dicha aplicacion.

Desde ya muchas gracias

ajvdelphi 30-05-2012 21:21:25

Hola
Podés probar con esto:


procedure TForm1.Button1Click(Sender: TObject);

function EstaEjecutandose (ExeFile:string): boolean;
var H:word;
begin
H := CreateFile(PChar(ExeFile), GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
Result := (H >= 65535);
CloseHandle(H);
end;


begin
if EstaEjecutandose ('c:\windows\notepad.exe')
then Label1.Caption:='SI/YES'
else Label1.Caption:='NO';

end;

Espero sirva
Saludos
Augusto
:)

maeyanes 30-05-2012 21:30:08

Hola ajvdelphi

Bienvenido a los foros de Club Delphi, te recomiendo que le des una leida a la Guía de Estilo.

Otra cosa, cuando publiques código fuente en Delphi, usa las etiquetas [delphi]:

[delphi]
begin
ProcedimientoAEjecutar;
Variable := 'hola mundo';
// ejemplo
end;
[/delphi]

lo que se mostrará en los foros así:

Código Delphi [-]
begin
  ProcedimientoAEjecutar;
  Variable := 'hola mundo';
  // ejemplo
end;


Saludos...

ajvdelphi 30-05-2012 21:43:34

Hola maeyanes
Ok, entendido, ya me mandé dos, pero aprendí :):)

Saludos
Augusto

Casimiro Noteví 30-05-2012 21:46:45

A ver si recordamos poner los tags al código fuente, ejemplo: ;)



Gracias :)

gmendoza5426 30-05-2012 23:21:24

Hola ajvDelphi
Antes que todo gracias por respuesta
Una consulta en que parte le indico la direccion IP de la maquina que quiero monitorear si tiene ejecutando mi sistema?
Porque el codigo que me pasaste ya lo encontre y funciona pero solo en la maquina localmente, lo que necesito es monitorear una maquina en particular conociendo su nombre o su direccion IP.

Gracias nuevamente

ajvdelphi 31-05-2012 03:56:13

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        :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;
            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
:)

escafandra 04-06-2012 20:59:16

El código mostrado no trabaja en red.
La solución puede pasar por una App Cliente/Servidor..

En este hilo se habla de funciones capaces de detectar si se ejecuta un proceso.


Saludos.


La franja horaria es GMT +2. Ahora son las 22:31:48.

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