|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Если LCtrl удерживалась меньше 1 секунды, то действие1, иначе действие2. |
|
[решено] Если LCtrl удерживалась меньше 1 секунды, то действие1, иначе действие2.
|
Старожил Сообщения: 307 |
Профиль | Отправить PM | Цитировать Возможно ли реализовать такое:
While 1 _IsPressed("A2") Then _function() ;если нажата клавиша - левый Ctrl то... Sleep (100) WEnd Func _function() ;тут производится обработка, если клавиша - левый ctrl была просто нажата меньше секунды и отпущена то вызов функции If .... Then _next() ;если же клавиша левый ctrl была удержана больше секунды то выход из функции Else Return EndIf EndFunc ;_function() Func _next() MsgBox(0,"","тест") EndFunc ;_next() |
|
------- Отправлено: 09:46, 26-08-2009 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать beve, не понял - у тебя ведь уже была похожая задача?
[решено] Отслеживание нажатий клавиш на клавиатуре (чтоб узнать код нажатой клавиши) - фиксируешь нажатие, включаешь таймер - фиксируешь отжатие, измеряешь время, далее в зависимости от интервала |
Отправлено: 09:48, 27-08-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Цитата amel27:
|
|
------- Отправлено: 12:43, 27-08-2009 | #3 |
$AutoITer Сообщения: 446
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 13:07, 27-08-2009 | #4 |
Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать |
|
------- Отправлено: 13:18, 27-08-2009 | #5 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать #include <Misc.au3> While 1 If _IsPressed("A2") Then _function() ;если нажата клавиша - левый Ctrl то... Sleep (50) WEnd Func _function() ;тут производится обработка, если клавиша - левый ctrl была просто нажата меньше секунды и отпущена то вызов функции $tHandle = TimerInit() While _IsPressed("A2") Sleep(50) WEnd If TimerDiff($tHandle) <500 Then _next() ;если же клавиша левый ctrl была удержана больше секунды то выход из функции Else Return EndIf EndFunc ;_function() Func _next() MsgBox(0,"","тест",1) EndFunc ;_next() |
------- Отправлено: 14:24, 27-08-2009 | #6 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата beve:
#include <WindowsConstants.au3> #include <StructureConstants.au3> #include <Timers.au3> #include <WinAPI.au3> HotKeySet("{ESC}", "OnAutoItExit") Global $hStub_KeyProc = DllCallbackRegister("_Key_Proc", "int", "int;ptr;ptr") Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), _WinAPI_GetModuleHandle(0)) Global $CtrlState = 0 Global $CtrlLimit = 500 Global $CtrlTimer = 0 While 1 If $CtrlState = 2 Then ; по ходу нажали... If $CtrlTimer < $CtrlLimit Then _next() ; и сколько держали? $CtrlState = 0 ; уже обработали! EndIf Sleep(100) WEnd Func _next() ConsoleWrite("типа контрал, типа левый, типа быстро, типа нажал..." &@CRLF) EndFunc Func _Key_Proc($nCode, $wParam, $lParam) If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam) Local $KEYHOOKSTRUCT = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) ; Обработка нажатия левого CTRL: установка флага и таймера If $CtrlState=0 And $wParam = $WM_KEYDOWN And DllStructGetData($KEYHOOKSTRUCT,"vkCode")=162 Then $CtrlTimer = _Timer_Init() $CtrlState=1 EndIf ; Обработка отжатия левого CTRL: сброс флага, установка таймера If $CtrlState=1 And $wParam = $WM_KEYUP And DllStructGetData($KEYHOOKSTRUCT,"vkCode")=162 Then $CtrlTimer = _Timer_Diff($CtrlTimer) $CtrlState=2 EndIf Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam) EndFunc Func OnAutoItExit() If $hStub_KeyProc Then DllCallbackFree($hStub_KeyProc) If $hHook Then _WinAPI_UnhookWindowsHookEx($hHook) If @HotKeyPressed <> "" Then Exit EndFunc |
|
Отправлено: 09:37, 28-08-2009 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] php|Преобразовать секунды в дату | morgan1991 | Вебмастеру | 11 | 30-12-2009 00:14 | |
Доступ - Вирус просит отправить СМС, иначе никак не войти... | poisonkit | Лечение систем от вредоносных программ | 4 | 03-11-2009 13:52 | |
[решено] ОС показывает меньше ОЗУ чем стоит | asus a9rp | Материнские платы и память | 3 | 15-12-2008 17:26 | |
Разное - [решено] Свободное место на жестком диске меньше ожидаемого. | HellFire_MZ | Microsoft Windows 2000/XP | 2 | 28-06-2008 14:42 | |
Разное - [решено] Стал подвисать комп на 2-3 секунды из-за заражения | Bester | Лечение систем от вредоносных программ | 30 | 01-01-2008 15:24 |
|