Как найти все окна приложения, в том числе вложенные - VB

Узнай цену своей работы

Формулировка задачи:

Тут такой вопрос по этой теме Найти внутренне окна/контролы приложения Нужные мне окна находятся аж на 3 уровне вложенности относительно родительского окна приложения, соответственно мне пришлось писать аж целых 3 функции поиск детей, а это насколько я знаю нехорошо. можно как нибудь такое в 1 функции организовать?) чёт типа:
Листинг программы
  1. глв окно
  2. дочернее
  3. дети
  4. дети детей
  5. дети детей
  6. дети детей
  7. дети
  8. дети детей
  9. дети детей
  10. дети детей
?)))

Решение задачи: «Как найти все окна приложения, в том числе вложенные»

textual
Листинг программы
  1. Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
  2. 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
  3. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  4.  
  5. Const GW_HWNDNEXT = 2:
  6. Const GW_CHILD = 5
  7. Const GW_OWNER = 4
  8. Const GW_HWNDFIRST = 0
  9.  
  10. Dim buff$
  11. Dim hwnds As Long
  12. Dim kontrq&
  13.  
  14. Dim Sstr$
  15.  
  16.  
  17. Private Sub Form_Load()
  18.     Sstr = Space$(4)
  19.     hwnds = FindWindow(vbNullString, "МегаФон Интернет")
  20.     Call ScanOkon
  21. End Sub
  22.  
  23. Private Sub ScanOkon()
  24.     Dim HenTek As Long
  25.    
  26.     HenTek = GetWindow(hwnds, GW_CHILD)
  27.    
  28.     Do
  29.         If HenTek <> 0 Then  
  30.             buff = Space$(50)
  31.             SendMessage HenTek, &HD, 40, ByVal buff:
  32.             List1.AddItem Sstr & "  " & Str(HenTek) + " " + Trim(buff)
  33. '-------------------------------------------
  34.            kontrq = GetWindow(HenTek, GW_CHILD)
  35.             If kontrq <> 0 Then
  36.                 Sstr = Sstr + Sstr
  37.                 hwnds = HenTek
  38.                 Call ScanOkon
  39.                 Sstr = Right(Sstr, 4)
  40.             End If
  41.             '------------------------------------------------------------
  42.        End If
  43.         HenTek = GetWindow(HenTek, GW_HWNDNEXT)
  44.     Loop While HenTek <> 0
  45. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы