Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577

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

27.08.2013, 09:03. Показов 1670. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ помогите чутка, какими функциями добратся до дочерних окон/контролов (в том числе скрытых) приложения?
Пробовал функцию FindWindowEx но она не чего не возвращает.
Некоторые нужные мне окна имеют класс Static и постоянно изменяют своё имя.

Чего добился на данный момент так ток этого
Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
 
 
Const GW_HWNDFIRST = 0
Const GW_HWNDLAST = 1
Const GW_HWNDNEXT = 2
Const GW_HWNDPREV = 3
Const GW_OWNER = 4
Const GW_CHILD = 5
 
Dim ZhWnd As Long
Dim ThWnd As Long
Dim StrBYF As String
Dim Strviv As String
 
Private Sub Form_Load()
 
Timer1.Interval = 50
Timer1.Enabled = False
 
StrBYF = Space(255)
ZhWnd = FindWindow(vbNullString, "Program Manager") 'МегаФон Интернет
 
End Sub
 
Private Sub Timer1_Timer()
 
ZhWnd = GetWindow(ZhWnd, GW_HWNDPREV)
ThWnd = GetWindowText(ZhWnd, StrBYF, 255)
Strviv = Left(StrBYF, ThWnd)
 
'If Strviv <> vbNullString Then
Text1.Text = Text1.Text + Strviv + "    " + CStr(ZhWnd) + vbCrLf
'End If
 
 
End Sub
 
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
 
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub


Чёт типо продвинутого менеджера окон но он не выводит внутрение окна программ
Если же взять прогу anvirrus_mainpage то в ней можно как в Sry++ посмотреть все окна выделенного процесса.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2013, 09:03
Ответы с готовыми решениями:

Как найти все окна приложения, в том числе вложенные
Тут такой вопрос по этой теме https://www.cyberforum.ru/visual-basic/thread944198.html Нужные мне окна находятся аж на 3 уровне...

Отслеживание окна другого приложения
Может кто посоветует! Имеется программа из которой запускается другая программа со своей формой ,а первая форма минимизируется. ...

Сделать скриншот окна приложения
Добрый день! Как сделать, чтобы при нажатии на кнопку программа делала скриншот самой себя (сама форма не на весь экран), а затем...

3
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
27.08.2013, 10:22
Глянь как я искал "детей" - может сгодится...
Почему не проходит BM_CLICK ?
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
27.08.2013, 13:41  [ТС]
Цитата Сообщение от morgann55 Посмотреть сообщение
Глянь как я искал "детей" - может сгодится...
Почему не проходит BM_CLICK ?
Пишу в vb6 твой пример так же как и примеры самого майкрософта выдают ошибку
variable not defined в строчках где присутствует AddressOf

Не мог бы ктонибудь скинуть 100% рабочий исходник в котором можно получать хендлы
детей выбраного окна.

У меня уже крышу рвёт от всего этого
Ток не надо примеры на других сайтах я их уже штук 1000 перепробовал и не 1 не пашет, тупо
либо куча ошибок либо нулевой результат.

Добавлено через 19 минут
Во чё нашёл:
http://www.ishodniki.ru/base/v... andler.zip
Если почитать то я думаю многие найдут в этих исходниках то что надо.
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
27.08.2013, 22:54
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от radlif Посмотреть сообщение
Пишу в vb6 твой пример так же как и примеры самого майкрософта выдают ошибку
variable not defined в строчках где присутствует AddressOf

Не мог бы ктонибудь скинуть 100% рабочий исходник в котором можно получать хендлы
детей выбраного окна.
Добавлено через 19 минут
Во чё нашёл:
http://www.ishodniki.ru/base/v... andler.zip
Если почитать то я думаю многие найдут в этих исходниках то что надо.
Запускать надо с модуля (там глобальные переменные объявлены)...
(пример работает каждый день в течении месяца уже...)

Добавлено через 5 часов 2 минуты
Вот набросал пример попроще: без модуля, на Форме два ЛистБокса...
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
проверил - работает...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2013, 22:54
Помогаю со студенческими работами здесь

Написать текст в текстовое поле окна другого приложения
Помогите у кого нить может есть рабочий исходник чтобы нажимал на кнопку и вписывал текст в текстовые поля окна другого приложения ? ...

Запуск приложения на неродном разрешении экрана, кнопки\контролы\формы съезжают "в кучку"
При запуске приложения на неродном разрешении экрана кнопки\контролы\формы съезжают &quot;в кучку&quot;, не прорисовывается текст кнопок....

Почему Stack<T> внутренне представляет собой массив?
Я всегда думал, что наиболее логично использовать для этого связный список. Как же там организован рост стека? Копированием в массив...

Не могу найти контролы
Возникла проблема, хочу написать веб страницу на лотусе, не могу найти контролы:кнопки,едыт боксы и другое.У меня клиент 8.5.Страницу хочу...

Как запретить сворачивание окна приложения при нажатии кнопки "свернуть все окна"
Что происходит при нажатии этой кнопки в плане сообщениий, и как их перехватить и игнорировать,что бы окно не сворачивалось? Чем это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru