ID und alle geöffneten Fenster eines Prozesses ermitteln
Verfasst: 11.11.2012 22:29
Gibt es eine Möglichkeit, mit Hilfe von PB und der WinAPI anhand des Prozessnamens, die PID zu ermitteln und dazu alle geöffneten Fenster dieses Prozesses?
Edit:
OK, ich hab jetzt durch viel hin und her probieren eine Lösung für mein Problem gefunden. Falls jemanden interessiert wie ich das gemacht hab, hier mal ein etwas vereinfachtes Code-Schnipsel.
Edit:
OK, ich hab jetzt durch viel hin und her probieren eine Lösung für mein Problem gefunden. Falls jemanden interessiert wie ich das gemacht hab, hier mal ein etwas vereinfachtes Code-Schnipsel.
Code: Alles auswählen
Structure wnd
hwnd.i
pid.i
EndStructure
Global NewList Windows.wnd()
Procedure GetWindowsFromProcess(hwnd, param)
Entry.MODULEENTRY32\dwSize = SizeOf(MODULEENTRY32)
GetWindowThreadProcessId_(hwnd,@PID)
If Module32First_(CreateToolhelp32Snapshot_(#TH32CS_SNAPMODULE,PID),Entry) And (#WS_EX_TOOLWINDOW And GetWindowLongPtr_(hwnd,#GWL_STYLE) & #WS_VISIBLE)
ProcessPath$ = PeekS(@Entry\szExePath)
ProcessName$ = StringField(ProcessPath$, CountString(ProcessPath$, "\") + 1, "\")
If ProcessName$ = "notepad.exe"
AddElement(Windows())
Windows()\hwnd = hwnd
Windows()\pid = PID
EndIf
EndIf
ProcedureReturn #True
EndProcedure
EnumWindows_(@GetWindowsFromProcess(), 0)
ForEach Windows()
Debug Windows()\hwnd
Debug Windows()\pid
Debug "-----"
Next