powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не могу найти ListBox FindWindowEx
4 сообщений из 4, страница 1 из 1
Не могу найти ListBox FindWindowEx
    #38691632
Gustly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Перерыл кучу тем и примеров. Но никак не хочет работать.

Пишу в Visual Studio express 2012 в win7 x64
Код: vbnet
1.
2.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long


...
Код: vbnet
1.
2.
3.
4.
hwnd = FindWindow(vbNullString, "Прога")
'Находит
wnd = FindWindowEx(hwnd, vbNullString, "ListBox", vbNullString)
'Не находит


Через программу Wininspector нашел его хэндл, проверил classname - "ListBox".
Что может быть не так?
...
Рейтинг: 0 / 0
Не могу найти ListBox FindWindowEx
    #38692600
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GustlyЧто может быть не так?
Все что угодно.
Сдается мне, с дочерними контролами иногда бывают проблемы.

Например.

16230592

Кстати, ты форумом таки ошибся.

>Пишу в Visual Studio express 2012 в win7 x64
А что ты тогда As Long лепишь?
В .Net вообще-то As Int32 или As IntPtr
Из за этого видимо и не находит

C т.зр. VB6 код правильный.
...
Рейтинг: 0 / 0
Не могу найти ListBox FindWindowEx
    #38692604
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще,

Код: vbnet
1.
hwnd = FindWindow(vbNullString, "Прога")



-это не очень надежно.
Надо делать EnumWindow, сравнивать кэпшены, и дополнительно проверять наличие какого-либо уникального child (если искомая прога твоя конечно). А проверочным child можно сделать например Button с какой-нибудь уникальной надписью типа "Хитро-вые...aнная прога qwertyui"
...
Рейтинг: 0 / 0
Не могу найти ListBox FindWindowEx
    #38692701
Gustly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решилась.

FindWindowEx - ищет только дочерние объекты. Через Winspector нашел, где лежит мой искомый объект.
Оказалось нужно несколько раз вызвать FindWindowEx с правильными параметрами, а в моем случае почти без них. Там идет четко друг за другом. Можно ли осуществить поиск класса с большой вложенностью детей, а не только среди дочерних объектов?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
hwnd = FindWindow(vbNullString, "Прога")
        wnd = FindWindowEx(hwnd, 0&, vbNullString, vbNullString)
        wnd2 = FindWindowEx(wnd, 0, vbNullString, vbNullString)
        wnd2 = FindWindowEx(wnd, wnd2, vbNullString, vbNullString)
        wnd = FindWindowEx(wnd, wnd2, vbNullString, vbNullString)
        wnd = FindWindowEx(wnd, 0&, vbNullString, vbNullString)
        wnd = FindWindowEx(wnd, 0&, vbNullString, vbNullString)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не могу найти ListBox FindWindowEx
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]