Api для Combobox в чужом окне

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Cav
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 14.07.2003 (Пн) 19:25

Api для Combobox в чужом окне

Сообщение Cav » 06.01.2006 (Пт) 15:27

Есть hwnd combobox'а в чужом, неактивном окне.
Умею получать список элементов, выбирать нужный... даже открывать и закрывать комбобокс.

Но форма того приложения, похоже, ЛОВИТ (срабатывает) только тычки мышкой(когда выбираешь элемент) и что-то вроде keydown или keypressed, то есть не проверяет on_change.

Собсвенно проблема: после выбора элемента (или во время)- послать событие клика или нажатия кнопки.

пробовал:

Call SendMessage(Childhwnd, BM_CLICK, 0&, 0&)

то же с CBN_SELCHANGE, DBLCLCIK

p.s. sendkeys работает, но окно не активное или скрытое бывает - не подойдёт. Симулятор мыши тоже не предлагайте - нужен именно вызов события.

p.p.s Если кто знает где достать мануал по работе с всякими контролами - покажите... я не нашел.






[/code]

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 06.01.2006 (Пт) 17:27

Попробуй посылать последовательно через PostMessage WM_LBUTTONDOWN и WM_LBUTTONUP. Или через SendMessage. Нужно пробовать.
То, что для одних константа, для других только переменная...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 06.01.2006 (Пт) 17:39

Да, и еще. Посмотрим, что написано в MSDN по этому поводу ;)

An application sends a BM_CLICK message to simulate the user clicking a button. This message causes the button to receive the WM_LBUTTONDOWN and WM_LBUTTONUP messages, and the button's parent window to receive a BN_CLICKED notification message.


и еще:

If the button is in a dialog box and the dialog box is not active, the BM_CLICK message might fail. To ensure success in this situation, call the SetActiveWindow function to activate the dialog box before sending the BM_CLICK message to the button.


Так что выводы делай сам ;)
То, что для одних константа, для других только переменная...

Cav
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 14.07.2003 (Пн) 19:25

Сообщение Cav » 06.01.2006 (Пт) 19:06

If the button is in a dialog box and the dialog box is not active, the BM_CLICK message might fail. To ensure success in this situation, call the SetActiveWindow function to activate the dialog box before sending the BM_CLICK message to the button.
- это видимо и есть проблема.

Но я решил всё довольно просто - сначало делаю окно невидимкой шириной 0x0, потом акивным, делаю Sendkeys - а дальше деактивирую его и т.д.

В любом случае - спасибо.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 06.01.2006 (Пт) 19:39

Гм. Вариант, конечно. Но все же попробуй посылать один за другим WM_LBUTTONDOWN и WM_LBUTTONUP. Это и будет имитацией клика. А то мигающее окно не думаю, что очень красиво ;)
То, что для одних константа, для других только переменная...

Cav
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 14.07.2003 (Пн) 19:25

Сообщение Cav » 06.01.2006 (Пт) 19:49

не получилось - он просто открывает комбо... но событие не срабатывает.


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot и гости: 169

    TopList