Zitat von
dde:
wie kann ich durch den
prozess-handle den dateinamen des prozesses herausbekommen?
Das ist nicht gerade trivial. Die Prozess-ID wäre
wesentlich hilfreicher.
Ab Windows
XP gäbe es diese Möglichkeit...
(hat den Vorteil, dass man 'nur' PROCESS_QUERY_INFORMATION benötigt - statt PROCESS_QUERY_INFORMATION und PROCESS_VM_READ für GetModuleFilenameEx)
Delphi-Quellcode:
// requires PROCESS_QUERY_INFORMATION (and Windows XP)
function GetProcessImageFileName(Process: THandle): string;
type
TFNGetProcessImageFileNameA = function(Process: THandle; ImageFileName: LPSTR;
Size: DWORD): DWORD; stdcall;
const
Size = MAX_PATH;
var
PsApiModule: HMODULE;
GetProcessImageFileNameA: TFNGetProcessImageFileNameA;
begin
Result := '';
PsApiModule := LoadLibrary('psapi.dll');
if (PsApiModule <> 0) then
try
GetProcessImageFileNameA := TFNGetProcessImageFileNameA(
GetProcAddress(PsApiModule, 'GetProcessImageFileNameA'));
if not Assigned(GetProcessImageFileNameA) then
SetLastError(ERROR_CALL_NOT_IMPLEMENTED)
else
begin
SetLength(Result, Size + 1);
SetLength(Result, GetProcessImageFileNameA(Process, PChar(Result), Size));
end;
finally
FreeLibrary(PsApiModule);
end;
end;
...wobei das Ergebnis möglicherweise nicht ganz Deinen Erwartungen entsprechen wird (zum Beispiel: '\Device\HarddiskVolume6\borland\Delphi6\Projects\ Project1.exe')