Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не могу найти ListBox FindWindowEx / 4 сообщений из 4, страница 1 из 1
09.07.2014, 11:22
    #38691632
Gustly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу найти ListBox FindWindowEx
Добрый день.

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

Пишу в 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
10.07.2014, 04:12
    #38692600
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу найти ListBox FindWindowEx
GustlyЧто может быть не так?
Все что угодно.
Сдается мне, с дочерними контролами иногда бывают проблемы.

Например.

16230592

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

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

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

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



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

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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не могу найти ListBox FindWindowEx / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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