/ / vb.net findwindowex не работи за намиране на дете по заглавие - vb.net, pinvoke

vb.net findwindowex не работи за намиране на дете по заглавие - vb.net, pinvoke

Знам, че кодът ми не е толкова елегантен, но би трябвало да работи, а и не. Само за да дам главата нагоре, добавям масивите си към списъчна кутия, така че да ги виждам, докато получавам кода.

   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