Как узнать хендл объекта из другого окна?

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

Как узнать хендл объекта из другого окна?

Сообщение A.A.Z. » 12.09.2003 (Пт) 19:29

Сабж, например, узнать хендл какой-то кнопки Фотошопа?
Нет меня больше

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

Сообщение GSerg » 13.09.2003 (Сб) 5:20

Что значит хэндл?
Реальный внутренний фотошоповский указатель на класс ты вряд ли получишь :)
Только findwindow да getdc :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение A.A.Z. » 13.09.2003 (Сб) 20:17

Ну, например, у CommandButton есть проперть hWnd, ей, я думаю, через SendMessage можно послать сообщение, а как узнать hWnd объекта с другой формы? (Если я не прав, не бейте, плиз, ногами) :roll:
Нет меня больше

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

Сообщение GSerg » 14.09.2003 (Вс) 7:02

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

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

Сообщение A.A.Z. » 14.09.2003 (Вс) 18:09

Т.е. FindWindow по Caption ищет ещё и объекты?? :?: :shock:
Нет меня больше

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

Сообщение GSerg » 15.09.2003 (Пн) 7:07

А ты как думал? Всё, что имеет hWnd, является окном!
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SergeySV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 17.04.2003 (Чт) 14:39
Откуда: Россия, Москва

Сообщение SergeySV » 15.09.2003 (Пн) 9:27

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

Вообщем, в твоем случае проще сделать так: запустить Spy++(или WinInspector) - он тебе покажет всю иерархию окон. Чтобы долго не искать по этому дереву, можно ткнуть в нужную кнопку и он сразу перейдет к ней и покажет ее в иерар. дереве. Как правило в каждой программе очень часто элементы имееют свои уник. классы и по ним легко дойти до нужного элемента без всякого перебора.

Например, так я добирался до адресной строки в проводнике:

Код: Выделить всё
    'Ищем hWnd Проводника по его классу
    hndExpl = FindWindow("ExploreWClass", vbNullString)
    'Ищем hWnd ComboBox, который содержит адрес, продираясь через его родителей
    hndWork = FindWindowEx(hndExpl, 0, "WorkerA", vbNullString)
    hndBar = FindWindowEx(hndWork, 0, "ReBarWindow32", vbNullString)
    hndComb = FindWindowEx(hndBar, 0, "ComboBoxEx32", vbNullString)

Главное двигаться не быстрее, чем думает твоя голова.

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

Сообщение A.A.Z. » 15.09.2003 (Пн) 14:02

Ладно, пока попользуюсь другими программами... :? Неохота себе лишний геморрой зарабатывать!
Нет меня больше


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

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

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

    TopList