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)
-   -   Obtener la ruta de un ejecutable que esta en la lista de procesos para terminarlo (https://www.clubdelphi.com/foros/showthread.php?t=45191)

JuanErasmo 26-06-2007 00:12:10

Obtener la ruta de un ejecutable que esta en la lista de procesos para terminarlo
 
Hola amigos,,,,
tengo un grave problema,,,,

en una maquina muyyy remota, estoy ejecutando un software que se esta corriendo invisible ( solo se ve en la lista de procesos) y solo conozco el nombre del ejecutable, no se en que ruta lo instalo el cliente,
es posible averiguar la ruta en que esta, para poder terminar ese proceso?

Gracias!

DarkMan 26-06-2007 00:33:16

Bueno, tienes varias opciones para hacer lo que pides:
1. Conociendo el nombre del ejecutable puedes realizar una búsqueda por el disco duro hasta dar con el archivo.
2. Sabiendo que esta listado en los procesos, puedes obtener dicha lista y de ahí extraer la ruta del proceso.

Todo ello lo tienes ya en el foro, solo necesitas usar la búsqueda y podrás dar con la respuesta. Aunque si yo tuviese que elegir, elegiría la segunda opción pues seguramente sea más rápida.

Por supuesto puede haber más opciones pero estas son las que se me han ocurrido.

Y sobre terminar el proceso, tambien esta tratado en el foro, asi que te recomiendo que dediques un poco de tiempo a su búsqueda.

juanlaplata 27-06-2007 15:29:10

Bueno con esta funcion creo que podras cerrar el proceso.
Código Delphi [-]
uses windows;
var valor:integer;
...
valor:=FindWindow(nil,'Nombre del Proceso');
If (valor<>0) then SendMessage(valor,WM_CLOSE,0,0);

rounin 27-06-2007 17:24:50

No necesitas la ruta para terminar un proceso, solo Process Id

Código:


// uses TlHelp32;
function GetProcessIdByName(const ExeName: string): Integer;
var PE: TProcessEntry32;
    hSS: THandle;
    s: string;
begin
  Result := 0;
  hSS := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, GetCurrentProcessId);
  PE.dwSize := SizeOf(PE);
  Process32First(hSS, PE);
  repeat
    s := PE.szExeFile;
    if CompareText(s, ExeName) = 0 then
    begin
      Result := PE.th32ProcessID;
      Break;
    end;
  until not Process32Next(hSS, PE);
  CloseHandle(hSS);
end;
procedure KillProcessById(ProcessId: Integer);
var h: THandle;
begin
  h := OpenProcess(PROCESS_TERMINATE, False, ProcessId);
  if h = 0 then Exit;
  TerminateProcess(h, 0);
  CloseHandle(h);
end;
function GetFullExePathById(ProcessId: Integer): string;
var ME: TModuleEntry32;
    hSS: THandle;
    s: string;
begin
  Result := '';
  hSS := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, ProcessId);
  ME.dwSize := SizeOf(ME);
  Module32First(hSS, ME);
  repeat
    s := LowerCase(ME.szExePath);
    if Pos('.exe', s) <> 0 then
    begin
      Result := s;
      Break;
    end;
  until not Module32Next(hSS, ME);
  CloseHandle(hSS);
end;



La franja horaria es GMT +2. Ahora son las 20:56:34.

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