Как найти все окна приложения, в том числе вложенные - VB
Формулировка задачи:
Тут такой вопрос по этой теме Найти внутренне окна/контролы приложения
Нужные мне окна находятся аж на 3 уровне вложенности относительно родительского окна приложения,
соответственно мне пришлось писать аж целых 3 функции поиск детей, а это насколько я знаю нехорошо.
можно как нибудь такое в 1 функции организовать?)
чёт типа:
?)))
Листинг программы
- глв окно
- дочернее
- дети
- дети детей
- дети детей
- дети детей
- дети
- дети детей
- дети детей
- дети детей
Решение задачи: «Как найти все окна приложения, в том числе вложенные»
textual
Листинг программы
- Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
- Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
- Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- Const GW_HWNDNEXT = 2:
- Const GW_CHILD = 5
- Const GW_OWNER = 4
- Const GW_HWNDFIRST = 0
- Dim buff$
- Dim hwnds As Long
- Dim kontrq&
- Dim Sstr$
- Private Sub Form_Load()
- Sstr = Space$(4)
- hwnds = FindWindow(vbNullString, "МегаФон Интернет")
- Call ScanOkon
- End Sub
- Private Sub ScanOkon()
- Dim HenTek As Long
- HenTek = GetWindow(hwnds, GW_CHILD)
- Do
- If HenTek <> 0 Then
- buff = Space$(50)
- SendMessage HenTek, &HD, 40, ByVal buff:
- List1.AddItem Sstr & " " & Str(HenTek) + " " + Trim(buff)
- '-------------------------------------------
- kontrq = GetWindow(HenTek, GW_CHILD)
- If kontrq <> 0 Then
- Sstr = Sstr + Sstr
- hwnds = HenTek
- Call ScanOkon
- Sstr = Right(Sstr, 4)
- End If
- '------------------------------------------------------------
- End If
- HenTek = GetWindow(HenTek, GW_HWNDNEXT)
- Loop While HenTek <> 0
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д