Как получить список ID контролов в другом окне?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Как получить список ID контролов в другом окне?

Сообщение X-BOND » 09.08.2004 (Пн) 16:04

Включая Label и прочие Frame

? ? ?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.08.2004 (Пн) 17:26

Private Declare Function GetDlgCtrlID Lib "user32.dll" (ByVal hwnd As Long) As Long
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 09.08.2004 (Пн) 17:35

Да, но для этого надо знать Handle to the control. А мне известно только hWnd всего окна. К тому же Label не имеют hWnd, как тогда их отловить?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.08.2004 (Пн) 17:39

А сам покопать?
И восторженно найти enumchildwindows?
Нет?
:(
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 09.08.2004 (Пн) 17:53

А Label все таки не ловятся... :?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.08.2004 (Пн) 17:56

Lightweight'ы никогда не ловились :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 09.08.2004 (Пн) 17:59

Зная Caption поймать можно

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2004 (Вт) 7:38

X-BOND писал(а):Зная Caption поймать можно

Лейблы - не окна и не объекты, поэтому их невозможно ловить.
Image и Timer тоже невозможно ловить. Или их тоже хочется?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.08.2004 (Вт) 9:27

Насчет таймеров не уверен. hWnd у них конечно нет, но вроде бы они как-то регистрируются и их можно определить.
Lasciate ogni speranza, voi ch'entrate.

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 10.08.2004 (Вт) 10:08

tyomitch писал(а):
X-BOND писал(а):Зная Caption поймать можно

Лейблы - не окна и не объекты, поэтому их невозможно ловить.
Image и Timer тоже невозможно ловить. Или их тоже хочется?

Фрагмент кода:
'Get the Sample static label handle . . .
hFontDlgSample = FindWindowEx(hdlgHook, %null, BYVAL 0, "AaBbYyZz" )
CTrlID = GetDlgCtrlID(hFontDlgSample)

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 10.08.2004 (Вт) 10:13

X-BOND писал(а):
tyomitch писал(а):
X-BOND писал(а):Зная Caption поймать можно

Лейблы - не окна и не объекты, поэтому их невозможно ловить.
Image и Timer тоже невозможно ловить. Или их тоже хочется?

Фрагмент кода:
'Get the Sample static label handle . . .
hFontDlgSample = FindWindowEx(hdlgHook, %null, BYVAL 0, "AaBbYyZz" )
CTrlID = GetDlgCtrlID(hFontDlgSample)

Вот-вот. Я когда перебирал контролы в чужом окне, лейблы всегда получались класса Static

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.08.2004 (Вт) 10:44

В "нормальных" окнах это как раз таки Static и хэндл они имеют. А в VB нет, т.к. это текст, нарисованный поверх формы.
Lasciate ogni speranza, voi ch'entrate.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 10.08.2004 (Вт) 13:56

alibek писал(а):В "нормальных" окнах это как раз таки Static и хэндл они имеют. А в VB нет, т.к. это текст, нарисованный поверх формы.

Вот пример подтверждающий это. Вытаскивает ID контролов и тексты с кнопок и лейблов с чужого окна.
Вложения
GetCtrlId.zip
(3.42 Кб) Скачиваний: 56

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.08.2004 (Вт) 14:19

Еще раз повторю, это работает для Static, но VB Label это не Static и дескриптора не имеет.
Lasciate ogni speranza, voi ch'entrate.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 10.08.2004 (Вт) 14:37

alibek писал(а):Еще раз повторю, это работает для Static, но VB Label это не Static и дескриптора не имеет.

Точно. :(
Это есть не зер гуд. :( А как тогда прочитать лейблы в программе написаной на VB? На других языка понятно. Через тот же GetDlgCtrlID, а здесь?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.08.2004 (Вт) 14:39

GetDC, BitBlt, NeuralNet_ProcessImage...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.08.2004 (Вт) 14:54

Шутник, шутник :)
Но тем не менее, это перспективный способ. Если считать, что текст на лэйблах печатается стандартным фонтом, на непрозрачном (не текстурном) фоне, то распознование образа букв проблемы не составит. Нужно будет в виртуальном DC напечатать каждый символ и сравнивать образцы в поисках соответствия.
Lasciate ogni speranza, voi ch'entrate.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 10.08.2004 (Вт) 15:02

alibek писал(а):Шутник, шутник :)
Но тем не менее, это перспективный способ. Если считать, что текст на лэйблах печатается стандартным фонтом, на непрозрачном (не текстурном) фоне, то распознование образа букв проблемы не составит. Нужно будет в виртуальном DC напечатать каждый символ и сравнивать образцы в поисках соответствия.

Не. Это не для меня. Слишком уж мудрёно получается.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 1

    TopList  
cron