Найти внутренне окна/контролы приложения - VB

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

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

Народ помогите чутка, какими функциями добратся до дочерних окон/контролов (в том числе скрытых) приложения? Пробовал функцию FindWindowEx но она не чего не возвращает. Некоторые нужные мне окна имеют класс Static и постоянно изменяют своё имя. Чего добился на данный момент так ток этого
Чёт типо продвинутого менеджера окон но он не выводит внутрение окна программ Если же взять прогу anvirrus_mainpage то в ней можно как в Sry++ посмотреть все окна выделенного процесса.

Решение задачи: «Найти внутренне окна/контролы приложения»

textual
Листинг программы
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long ' âîçâðГ*Г№Г*ГҐГІ äåñêðèïòîð îêГ*Г*, Г±ГўГїГ§Г*Г*Г*îãî Г± Г¤Г*Г*Г*ûì îêГ*îì. Èìåþòñÿ ââèäó îòГ*îøåГ*ГЁГї ìåæäó äî÷åðГ*ГҐ - ðîäèòåëüñêèìè îêГ*Г*ìè èëè îòГ*îøåГ*ГЁГї ìåæäó äî÷åðГ*èìè îêГ*Г*ìè Г±Г*ìîãî ðîäèòåëüñêîãî îêГ*Г*
Const GW_HWNDNEXT = 2: Const GW_CHILD = 5
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd 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 Const WM_GETTEXT = &HD: Private Const WM_GETTEXTLENGTH = &HE
Dim HenTek&
 
Private Sub Form_Load()
Call ÑêГ*Г*ГЋГЄГ®Г*
End Sub
 
Public Sub ÑêГ*Г*ГЋГЄГ®Г*()
Dim strCaption As String
Dim hwnd&
hwnd = GetDesktopWindow()
hwnd = GetWindow(hwnd&, GW_CHILD)
Do
dummy& = GetWindowTextLength(hwnd)
  If dummy <> 0 Then
       strCaption = String(dummy + 1, " ")
         dummy = GetWindowText(hwnd, strCaption, dummy + 1)
         sSave = strCaption: If Asc(Right(strCaption, 1)) = 0 Then sSave = Left(strCaption, Len(strCaption) - 1) 'îòñåêГ*ГҐГ¬ ГЄГ®Г*ГҐГ·Г*ûé "ГЄГўГ*äðГ*ГІ"
         List1.AddItem Str(hwnd) + "  -  " + sSave:
               If sSave <> "" Then HenTek = hwnd: Call ÏîèñêÄåòåé 'ищем детей в окнах с заголовками
               'If hwnd = ÈñêîìûéÕåГ*äë Then HenTek = hwnd: Call ÏîèñêÄåòåé ' ищем по хендлу
  End If: hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop While hwnd <> 0
End Sub
 
Public Sub ÏîèñêÄåòåé()
Dim buff$
Dim nextwin As Long ' ïîëó÷èì äåñêðèïòîð ñëåäóþùåãî îêГ*Г* Гў Z-order
List2.AddItem Str(HenTek) + " - äåòè ----------------------------":
nextwin = GetWindow(HenTek, GW_CHILD)  'ïîëó÷Г*ГҐГ¬ äåñêðèïòîð äî÷åðГ*ГҐГЈГ® îêГ*Г*
Do
   If nextwin <> 0 Then   ' Г*ГҐ èñïîëüçóéòå ГґГ«Г*æêè, åñëè Г*ГЁГЄГ*êîãî ГІГ*êîãî îêГ*Г* Г*ГҐ Г±ГіГ№ГҐГ±ГІГўГіГҐГІ
      buff = Space$(50): SendMessage nextwin, &HD, 40, ByVal buff: List2.AddItem Str(nextwin) + " " + Trim(buff):
          'If Г—ГІГ® - òîÈñêîìîå Then Äåéñòâèÿ:
   End If: nextwin = GetWindow(nextwin, GW_HWNDNEXT) 'ïîëó÷Г*ГҐГ¬ äåñêðèïòîð ñëåäóþùåãî îêГ*Г*
Loop While nextwin <> 0
End Sub

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


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

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

5   голосов , оценка 4.2 из 5
Похожие ответы