hWnd объекта с чужой формы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

hWnd объекта с чужой формы

Сообщение A.A.Z. » 21.01.2004 (Ср) 23:22

Как найти hWnd объекта с чужой формы, зная его Caption / Text?
Только плиз, не отправляйте в поиск, мне там ничего не помогло! :(
Нет меня больше

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 22.01.2004 (Чт) 2:05

Если тебе известен Hwnd чужой формы, то хэндл объекта найдешь так:
Object_Wnd = FindWindowEx(Hwnd, 0, vbNullString, "Caption")

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 22.01.2004 (Чт) 19:01

2 Kostyan - :mrgreen:
Спасибо! Наконец-то услышал правду! :)
Нет меня больше

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 03.02.2004 (Вт) 23:18

Сорри что опять тему поднимаю, но:
как найти hWnd объекта без Caption, там, TextBox, ListBox, ComboBox?
Как найти hWnd объекта типа OptionButton / CheckBox? У меня по Caption не находит. :oops:
Нет меня больше

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 04.02.2004 (Ср) 0:11

У OptionButton/CheckBox, кажется, вообще нет hWnd :oops:, хотя, возможно, я и ошибаюсь.

Окна мона искатьне только по названию, но и по классу:

Object_Wnd = FindWindowEx(Hwnd, 0, "ClassName", vbNullString)

Только надо использовать функцию EnumChildWindows, т.к. в окне (в частном случае - на форме) может быть несколько контролов одного класса (несколько TextBox'ов).
EnumChildWindows (надеюсь, объявление и описание сам найдёшь) возвращает hWnd всех дочерних объектов, имеющих дескрипторы. Когда она всех уже перебрала, возвращает 0. Т.е. надо её вызывать, пока она не возвратит ноль. Потом смотрим класс всех этих hWnd и делаем соответствующие выводы.

P.S. Посмотреть класс можно через GetClassName:

Dim wClass as String*255
wClass=String(255, " ")
Call GetClassName(Text1.hWnd,wClass,255)
'wClass - это и есть класс TextBox

Так же смотрим классы других объектов: сначала ищем hWnd, затем из него класс...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 04.02.2004 (Ср) 17:53

Понял, спасибо, будем пробовать! :)
Нет меня больше


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

    TopList