![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Puoar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.11.2007 Репутация: нет Всего: 1 |
Можно ли программно нажать произволную кнопку на окне, а так-же нажать ее вообще не выводя окно на экран. Короче как запустить некий установщик имеющий диалоги, но их не показывать и на все задаваемые в диалогах вопросы овечать "да" ну или "нет" по моему усмотрению?
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
практически все установщики имеют silent режим(обычно опции -s -q), в котором инсталляция проходит без вопросов.
|
|||
|
||||
| Puoar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.11.2007 Репутация: нет Всего: 1 |
||||
|
||||
| AndreyK |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Нажать кнопку просто - послать ей сообщение WM_COMMAND (функцией SendMessage).
Или ,если у всего диалога есть обработка клавиши Enter (действия по умолчанию), послать (всему диалогу) сообщение о нажатии Enter. Для этого ,кажеться, надо послать несколько сообщений - нажатия, отжатия ... в общем можно подсмотреть в обработчике сообщений любой программы. Хотя щас инсталляторы предлагают ответить : "Вы согласны с лицензионным соглашением?" а без этого ответа "по умолчанию" не пройдёшь. |
|||
|
||||
| alias_trinity |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 10.5.2007 Репутация: 1 Всего: 1 |
1. Найди дескриптор кнопочки : hButton = GetDlgItem(hWnd, ID_BUTTON);
2. Пошли сообщение BM_CLICK : SendMessage(hButton, BM_CLICK, 0, 0); Или просто SendDlgItemMessage(hWnd, ID_BUTTON, BM_CLICK, 0, 0); Сам диалог просто сделай ShowWindow(hWnd, 0); |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Просто жуть, что советуешь... в MSDN бы заглянул... нет такого сообщения... Должно быть WM_COMMAND, с wParam = идентификатор кнопки, lParam - 0. Хотя это не гарантирует, что кнопка будит правильно обработана, т.к. такой формат у команды меню - мало ли что этот диалог себе думает, может и проверить... От реального нажатия кнопки придет команда с wParam = MAKEWORD (btnID, BN_CLICKED) и lParam = hWndBtn. Так и надо делать для гарантии. Только это не нажатие кнопки будет визуальное), а прямая посылка этой команды. Если хочешь именно нажатие, вызывай mouse_event, определив экранные координаты нужной кнопки. Диалог на экран не выводить не получиться - если нет silent-режима - не ты же этим управляешь. Можно его, конечно, и спрятать, но мелькать все равно будет. Но основная проблема - определить, когда очередное окно готово к нажатию кнопки... И какую из имеющихся кнопок нужно жать... Если знаешь, как сделать это, то нажать-то... -------------------- ... |
|||
|
||||
| alias_trinity |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 10.5.2007 Репутация: 1 Всего: 1 |
А ты утруди себя и скомпиль вот этот код :
Про результаты напишеш... |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Да, ты прав, это мне надо было сначала посмотреть в MSDN.
Не знала про это сообщение - теперь буду, может и пригодится когда. -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |