WinApi Variante der GetProcessesByName() Funktion
-
Wie finde ich sie?
Danke.
-
Das ist nicht so einfach....
1. EnumProcesses
http://msdn.microsoft.com/en-us/library/ms6826292. OpenProcess
http://msdn.microsoft.com/en-us/library/ms684320
mit PROCESS_QUERY_INFORMATION (und für GetModuleFileNameEx noch zusätzlich PROCESS_VM_READ)3. GetModuleFileNameEx
http://msdn.microsoft.com/en-us/library/ms6831983.1. Besser ist aber GetProcessImageFileName
http://msdn.microsoft.com/en-us/library/ms683217bzw. ab Vista QueryFullProcessImageName
http://msdn.microsoft.com/en-us/library/ms684919Optional ist es noch nötig den zurückgegebenen Dateinamen via FindFirstFile in einen langen Dateinamen umzuwandeln, falls der Prozess via COM gestartet wurde...
-
Alternativ sollte es auch mit Hilfe der Toolhelp32 Library gehen: http://msdn.microsoft.com/en-us/library/ms686837%28VS.85%29.aspx
1. Toolhelp32 Snapshot mit TH32CS_SNAPPROCESS erstellen
2. Mit Process32First erhältst du den ersten Prozess (ist immer "[SYSTEM]", kann ignoriert werden)
3. Mit Process32Next erhältst du nacheinander PROCESSENTRY32 Strukturen mit Infos wie Exe-Name, ID, etc. des ProzessesWenn der gesuchte Name mit einem aus Process32Next übereinstimmt, erhältst du das Prozess-Handle über OpenProcess
-
ƒred schrieb:
Alternativ sollte es auch mit Hilfe der Toolhelp32 Library gehen: http://msdn.microsoft.com/en-us/library/ms686837%28VS.85%29.aspx
1. Toolhelp32 Snapshot mit TH32CS_SNAPPROCESS erstellen
2. Mit Process32First erhältst du den ersten Prozess (ist immer "[SYSTEM]", kann ignoriert werden)
3. Mit Process32Next erhältst du nacheinander PROCESSENTRY32 Strukturen mit Infos wie Exe-Name, ID, etc. des ProzessesWenn der gesuchte Name mit einem aus Process32Next übereinstimmt, erhältst du das Prozess-Handle über OpenProcess
Hat funktioniert. Danke.