Знам, че кодът ми не е толкова елегантен, но би трябвало да работи, а и не. Само за да дам главата нагоре, добавям масивите си към списъчна кутия, така че да ги виждам, докато получавам кода.
cb = New CallBack(AddressOf MyCallBack)
EnumWindows(cb, 0)
Dim CadTITLE As String = ""
For Each item As String In ListBox1.Items
If item.Contains("Program Name") Then
CadTITLE = item
End If
Next
ListBox1.Items.Clear()
Dim Hwnd As IntPtr = FindWindow(Nothing, CadTITLE)
Dim hndls() As IntPtr = GetChildWindows(Hwnd)
Dim CallTITLE As String = ""
For Each hnd In hndls
If Len(GetText(hnd)) > 0 Then
ListBox1.Items.Add(GetText(hnd))
End If
Next
For Each item As String In ListBox1.Items
If item.Contains("Call No") Then
CallTITLE = item
End If
Next
Dim hwnd2 As IntPtr = FindWindowEx(Hwnd, IntPtr.Zero, nothing, CallTITLE)
If hwnd2.Equals(IntPtr.Zero) Then
MsgBox("Not Found")
Else
MsgBox("Found")
End If
Според MSDN, Би трябвало да мога да намеряиндоукс отзаглавие на прозореца, което намерих в променливата CallTITLE (потвърдено с msgbox (CallTITLE), но все още не е откриването на прозореца на детето. Той трябва да върне msgbox ("намерен") и тогава мога да продължа да намеря текстовото поле, което ми трябва.
Отговори:
0 за отговор № 1Винаги мога да се боря с нещо с часове и веднага щом задам въпроса, го измислям. Липсваше ми ниво. MDIClient, трябваше да го хвана по-скоро.
Dim hwnd2 As IntPtr = FindWindowEx(Hwnd, Nothing, "MDIClient", Nothing)
Dim hwnd3 As IntPtr = FindWindowEx(hwnd2, Nothing, Nothing, CallTITLE)
If hwnd3.Equals(IntPtr.Zero) Then
MsgBox("Not Found")
Else
MsgBox("Found")
End If