AW: Handle von Window finden, wenn WindowText leer
14.05.2013 08:15:56
Window
Nein, der Klassenname der Fenster ist immer gleich.
Ist meine Annahme, dass die Reihenfolge der Fenster immer konstant ist, richtig?
Dann könnte ich meine GetWindow Abfrage mehrfach wiederholen, also jeweils mit dem Handle, der bei der vorherigen Abfrage wiedergegeben wurde...
Mein Code:
Private Declare Function FindWindow _
Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As Long
Private Declare Function GetWindow _
Lib "user32" ( _
ByVal hWnd As Long, _
ByVal wCmd As Long) _
As Long
Const GW_Child = 5
Const GW_HWNDNEXT = 2
Sub test()
Dim hWndParent As Long, hWndChild As Long
hWndParent = FindWindow(vbNullString, "Externes Programm")
hWndChild = GetWindow(hWndParent, GW_Child)
hWndParent = hWndChild
hWndChild = GetWindow(hWndParent, GW_Child)
hWndChild = GetWindow(hWndChild, GW_HWNDNEXT)'Hier gehe ich zum zweiten Fenster
hWndParent = hWndChild
hWndChild = GetWindow(hWndParent, GW_Child)
hWndParent = hWndChild
hWndChild = GetWindow(hWndParent, GW_Child)
hWndParent = hWndChild
hWndChild = GetWindow(hWndParent, GW_Child)
hWndParent = hWndChild
hWndChild = GetWindow(hWndParent, GW_Child)
hWndChild = GetWindow(hWndChild, GW_HWNDNEXT)'Hier gehe ich zum zweiten Fenster
hWndParent = hWndChild
hWndChild = GetWindow(hWndParent, GW_Child)
hWndParent = hWndChild
hWndChild = GetWindow(hWndParent, GW_Child)
hWndParent = hWndChild
hWndChild = GetWindow(hWndParent, GW_Child)
hWndParent = hWndChild
hWndChild = GetWindow(hWndParent, GW_Child)
Debug.Print Hex(hWndChild)
End Sub
Ist diese Lösung stabil? Kann man das irgendwie besser machen?