|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отследить нажатие кнопки |
|
|
[решено] Отследить нажатие кнопки
|
Новый участник Сообщения: 18 |
Профиль | Отправить PM | Цитировать Как можно в скрипте отследить нажатие определенной кнопки в программе, запущенной из этого скрипта?
|
|
Отправлено: 12:37, 06-08-2009 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Сам понял что написал ?
|
Отправлено: 13:11, 06-08-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать Из скрипта запускается некая программа.
Далее нужно чтобы скрипт отловил нажатие определенной кнопки в программе человеком. Что не так? |
Отправлено: 13:20, 06-08-2009 | #3 |
Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать Нажатие определённой кнопки интерфейса или кнопки клавиатуры?
|
------- Отправлено: 14:47, 06-08-2009 | #4 |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать Кнопки (Button) интерфейса
|
|
Отправлено: 14:49, 06-08-2009 | #5 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Вернуть положение окна в котором находится кнопка, зная в каком месте находится кнопка в окне вычисляем её координаты.
Возвращаем координаты курсора по отношению к четырём координатам кнопки, если они совпадают то чени-то делаем. Незнаю кароче вот только это на ум пришло ...хотя мож какая функция есть невникал. |
Отправлено: 21:36, 06-08-2009 | #6 |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать Блин. ControlID этой кнопки-то определяется, нажать из скрипта я на нее могу,но в том-то и дело, что по логике именно человек на нее должен нажать и скрипт дальше поедет.
Неужели нет решения? |
Отправлено: 06:53, 07-08-2009 | #7 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать w3d1, само собой, можно - пример для кнопки "Пуск":
Global Const $WH_MOUSE_LL = 14 Global Const $MOUSE_PRIMARYDOWN_EVENT = 513 Global Const $MOUSE_PRIMARYUP_EVENT = 514 ; Наш подопытный контрол (кнопка "Пуск") Global $sMyWinTitle = "[CLASS:Shell_TrayWnd]" Global $sMyWinText = "" Global $sMyControl = "Button1" ; Рабочие глобальные переменные Global $iMyToggle = False Global $hMyControl = ControlGetHandle($sMyWinTitle, $sMyWinText, $sMyControl) ; Регистрируем ф-цию перехвата сообщений мышки Global $hKeyProc = DllCallbackRegister ("_KeyProc", "int", "int;ptr;ptr") Global $hmod = DllCall("kernel32.dll","hwnd","GetModuleHandle","ptr",0) Global $hHook = DllCall("user32.dll","hwnd","SetWindowsHookEx","int", $WH_MOUSE_LL, _ "ptr", DllCallbackGetPtr($hKeyProc), "hwnd", $hmod[0], "dword", 0) MsgBox(64, "Сообщение", 'На 20 секунд кнопка "Пуск" будет завачена под полный контроль!"') Sleep (20000) ; Процедура перехвата/обработки событий мышки Func _KeyProc($nCode, $wParam, $lParam) Local $aRet, $iRet Select Case $wParam = $MOUSE_PRIMARYDOWN_EVENT And _ControlIsHovered($hMyControl) ; нажали левую кнопку $iMyToggle = True ; запомнили где нажали Return 1 ; блокируем событие Case $wParam = $MOUSE_PRIMARYUP_EVENT And _ControlIsHovered($hMyControl) ; отпустили левую кнопку If $iMyToggle = True Then ; проверили, где отпустили $iRet = MsgBox(52, "Перехвачено действие", "Выполнить нажатие на кнопку?") If $iRet = 6 Then ControlClick($sMyWinTitle, $sMyWinText, $sMyControl) EndIf $iMyToggle = False Return 1 ; блокируем событие Case Else ; корректно пропускаем все остальные события $aRet = DllCall("user32.dll","long","CallNextHookEx","hwnd", $hHook[0], _ "int", $nCode, "ptr", $wParam, "ptr", $lParam) Return $aRet[0] EndSelect EndFunc ; Функция, проверяющая HWND контрола под мышкой Func _ControlIsHovered($hWnd) Local $aRet = DllCall("User32.dll", "int", "WindowFromPoint", _ "long", MouseGetPos(0), _ "long", MouseGetPos(1)) Return (HWnd($aRet[0])==$hWnd) EndFunc |
Отправлено: 05:29, 09-08-2009 | #8 |
Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать Вроде немного неправильно работает...
Без скрипта - нажмите на кнопку, а потом на рабочий стол. Менюшка исчезает. Со скриптом - остаётся. |
------- Отправлено: 10:18, 09-08-2009 | #9 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:30, 09-08-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Нажатие кнопки или переход по ссылке с меняющимся параметром. | ikif | AutoIt | 3 | 23-07-2009 01:09 | |
[решено]Нажатие кнопки-картинки в IE | ikif | AutoIt | 10 | 13-07-2009 22:06 | |
[решено] Отловить нажатие по плюсику | morgan1991 | AutoIt | 6 | 30-06-2009 10:54 | |
Samsung SyncMaster 940MW - невеная реакция на нажатие кнопки | ИС_ | Прочее железо | 0 | 24-02-2009 15:41 | |
как передать параметром нажатие кнопки ок. | qpa3ep | Microsoft Windows NT/2000/2003 | 1 | 04-05-2006 18:00 |
|