Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi GetProcessById (https://www.delphipraxis.net/196179-getprocessbyid.html)

EWeiss 28. Apr 2018 20:33

GetProcessById
 
welche alternative gibt es da für Delphi?

Ich möchte den Namen sowie den WindowTitel des aktiven Process anhand der ID ermitteln.
Die ProcessId wäre als Beispiel
Zitat:

ProcessID = 4584
gruss

KodeZwerg 28. Apr 2018 21:38

AW: GetProcessById
 
Über GetModuleFileNameEx kommst Du an den Dateinamen des Prozesses ran.
Fenstertitel wahrscheinlich über ein EnumWindow der Handles abfragbar.

EWeiss 28. Apr 2018 21:46

AW: GetProcessById
 
Zitat:

Zitat von KodeZwerg (Beitrag 1400835)
Über GetModuleFileNameEx kommst Du an den Dateinamen des Prozesses ran.
Fenstertitel wahrscheinlich über ein EnumWindow der Handles abfragbar.

Ne danke das ist klar! ;)
Ich möchte es auf diese weise.
Code:
Process p = Process.GetProcessById((int)session.GetProcessID);
p.ProcessName);
p.MainWindowTitle);
Wenn es nicht geht dann lasse ich es alles andere ist zu viel aufwand für die 2 kleinen abfragen.
Dann ist es einfacher die SessionIdentifier zu parsen und die Sachen da raus zu fischen.
Aber wie gesagt muss nicht unbedingt sein.


gruss

timog 28. Apr 2018 21:53

AW: GetProcessById
 
Der Funktion OpenProcess aus der unit PsAPI kann man eine PID übergeben; die liefert dann ein THandle zurück. Damit dann über GetModuleFileNameEx oder QueryFullProcessImageName den Modulnamen/Pfad zur Exe ermitteln und über GetWindowText den Fenstertitel.

KodeZwerg 28. Apr 2018 21:53

AW: GetProcessById
 
Was soll ProcessName sein? Der Klassenname eines Prozesses?

Das hier sollte für den Dateinamen klappen:
Delphi-Quellcode:
Function PIDtoEXEName ( const PID : Integer ) : String;
var
 szExeFile: array[0..MAX_PATH - 1] of Char;
 hnd : Integer;
begin
  HND := OpenProcess( PROCESS_ALL_ACCESS, FALSE, PID );
  if HND <> 0 then
  begin
   if GetModuleFileNameEx(HND, 0, szExeFile, SizeOf(szExeFile)) = 0 then StrPCopy(szExeFile, '');
   Result := szExeFile;
   CloseHandle(HND);
  end;
end;

EWeiss 28. Apr 2018 21:57

AW: GetProcessById
 
Zitat:

Zitat von timog (Beitrag 1400837)
Der Funktion OpenProcess aus der unit PsAPI kann man eine PID übergeben; die liefert dann ein THandle zurück. Damit dann über GetModuleFileNameEx oder QueryFullProcessImageName den Modulnamen/Pfad zur Exe ermitteln und über GetWindowText den Fenstertitel.

Ich sagte schon das es mir zu viel aufwand ist.
Zitat:

Was soll ProcessName sein? Der Klassenname eines Prozesses?
Der EXE Name so wie er unter Prozesse im Taskmanager aufgelistet ist?

Danke vergesst es ;)


gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 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