Ver Mensaje Individual
  #4  
Antiguo 12-05-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Otra cosa, acabo de ver que tenes un error importante

El error mas tipico y tonto de la programacion al programar en Windows: No chequear los errores

En tu codigo lo intentas hacer, pero mal

Las funciones de la API de Windows devuelven 0 para indicar que no hay error, y distinto de 0 indicando que hay error; donde el codigo retornado corresponde al codigo de error

Código Delphi [-]
function GetPathFromPID(const PID: cardinal): string;
var
  hProcess: THandle;
  path: array[0..MAX_PATH - 1] of char;
begin
  hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PID);
  if hProcess <> 0 then
    try
      if GetModuleFileNameEx(hProcess, 0, path, MAX_PATH) <> 0 then // cambie = 0 por <> 0
        RaiseLastOSError;
      result := path;
    finally
      CloseHandle(hProcess)
    end
  else
    RaiseLastOSError;
end;

La pregunta de la version de Delphi es por el tema del Unicode. A partir de Delphi 2009, el tipo string es un alias de UnicodeString. Antes eran AnsiString y habia que realizar conversiones explicitas a Unicode (en algunos casos obviamente)
Responder Con Cita