AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

prozess-handle --> dateiname

Ein Thema von dde · begonnen am 16. Mär 2004 · letzter Beitrag vom 16. Mär 2004
Antwort Antwort
dde

Registriert seit: 7. Mai 2003
132 Beiträge
 
#1

prozess-handle --> dateiname

  Alt 16. Mär 2004, 22:37
wie kann ich durch den prozess-handle den dateinamen des prozesses herausbekommen?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: prozess-handle --> dateiname

  Alt 16. Mär 2004, 22:40
kleiner Auszug aus nem Source
Delphi-Quellcode:
uses .., tlhelp32, .., ..;

procedure TProcessList.GetHandleInfo(WinHandle: HWND; var akttask: TTask);
var dwActiveProcessId,hModuleSnap:DWORD;snap:THandle;pe32,pe2:TPROCESSENTRY32;me32:TMODULEENTRY32;
Begin
 GetWindowThreadProcessId(WinHandle, @dwActiveProcessId);
 Snap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
 if Process32First(Snap, pe32) = true then
 begin
  if pe32.th32ProcessID = dwActiveProcessId then pe2 := pe32;
  while Process32Next(Snap, pe32) = true do if pe32.th32ProcessID = dwActiveProcessId then pe2 := pe32;
 end;
 akttask.ExeFile := pe2.szExeFile;
[...]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#3

Re: prozess-handle --> dateiname

  Alt 16. Mär 2004, 23:13
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')
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz