- Сообщения
- 7,790
- Репутация
- 2,323
;Нужные инклуды
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <HotKey.au3>
#include <vkConstants.au3>
;Глобальные константы
Global Const $TICK = 1 ;время сна карусели в мс
Global Const $WINDOW = 0
Global Const $CONTROL = 1
Global Const $TIME = 2
Global Const $PAUSE_TIME = 3
;Глобальные переменные
Global $Pause = 0
Global $Quit = 0
Global $PauseData[4]
;Обработчики нажатий на клавиатуру
_HotKey_Assign($VK_PAUSE, 'TogglePause') ;Перехватчик кнопки Pause Break
;HotKeySet('{PAUSE}', 'TogglePause') ;Перехватчик кнопки Pause Break
_HotKey_Assign(BitOR($CK_CONTROL, $VK_Q), 'ToggleQuit') ;Перехватчик Ctrl+Q выхода
;Пауза
Func Pause()
Switch $Pause
Case 1 ;поддерживаем паузу
If TimerDiff($PauseData[$TIME]) > 290000 Then ;прошло 4 минуты 50 секунд
$PauseData[$PAUSE_TIME] += 5 ;время на паузе
TrayTip('На паузе', 'уже '& $PauseData[$PAUSE_TIME] &' минут', 20, 1)
ControlFocus($PauseData[$WINDOW], '', $PauseData[$CONTROL]) ;Возвращаем фокус
ControlSend($PauseData[$WINDOW], '', $PauseData[$CONTROL], '{PAUSE}{PAUSE}')
$PauseData[$TIME] = TimerInit() ;считаем время снова
EndIf
Case 2 ;снимаем с паузы
WinActivate($PauseData[$WINDOW]) ;!!! НА ЭТОЙ СТРОКЕ ГЛЮЧИТ !!!
ControlFocus($PauseData[$WINDOW], '', $PauseData[$CONTROL]) ;Возвращаем фокус
ControlSend($PauseData[$WINDOW], '', $PauseData[$CONTROL], '{PAUSE}')
$Pause = 3 ;в ожидании активизации
Case 3 ;ждем активации окна
If WinActive($PauseData[$WINDOW]) Then ;если окно активное, то
$Pause = 0 ;готовы снова поставить на паузу
EndIf
EndSwitch
EndFunc
;Завершение работы
Func Terminate()
If $Quit > 0 Then ;пора выходить?
If TimerDiff($Quit) > 5000 Then ;прошло 5 секунд
Exit ;выходим
EndIf
EndIf
EndFunc
;;;; Тушка проги ;;;;
TrayTip('Прога запущена', 'Нажми "Pause Break" для включения паузы,'& @LF &'"Ctrl+Q" для завершения работы', 30, 1)
;Основной микроцикл карусели фукнций с временем тика 1мс
While 1
;карусель функций
Pause()
Terminate()
Sleep($TICK)
WEnd
;;;;;;;;
;Обработчик нажатия на "Pause"
Func TogglePause()
If $Quit = 0 Then ;процедура выхода не запущена?
Switch $Pause ;в зависимости от состояния паузы
Case 0 ;не были на паузе
$Pause = 1 ;теперь на паузе
TrayTip('Окно поставлено на паузу', 'Сделай себе кофейку', 20, 1)
$PauseData[$WINDOW] = WinGetHandle('[active]') ;запоминаем окно
$PauseData[$CONTROL] = ControlGetFocus($PauseData[$WINDOW]) ;запоминаем активный элемент
$PauseData[$TIME] = TimerInit() ;засекаем время
$PauseData[$PAUSE_TIME] = 0 ;а тут время на паузе
ControlSend($PauseData[$WINDOW], '', $PauseData[$CONTROL], '{PAUSE}')
Case 1 ;были на паузе
$Pause = 2 ;снимаем с паузы
TrayTip('Пауза', 'снята', 20, 1)
Case Else
TrayTip('Пауза', 'снята', 20, 1)
EndSwitch
EndIf
EndFunc
;Обработчик нажатия на "Ctrl+Q"
Func ToggleQuit()
If $Quit = 0 Then ;процедура выхода не запущена?
TrayTip('Завершаем работу', 'До новых встреч!', 5 ,1)
If $Pause = 1 Then ;Если были на паузе, то завершаем паузу
$Pause = 2
EndIf
$Quit = TimerInit()
EndIf
EndFunc
#Include <HotKey.au3>
#Include <vkConstants.au3>
HotKeySet( '+1', '_set' ) ; активирует горячую клавишу
HotKeySet( '+2', '_release' ) ; деактивирует
Func _set()
_HotKeyAssign(BitOR($CK_WIN, $VK_1), '_func')
EndFunc
Func _release()
_HotKeyAssign(BitOR($CK_WIN, $VK_1) )
EndFunc
Func _func()
_release() ; теоретически должна произойти деактивация, но нет...
ShellExecute('C:\')
EndFunc
While 1
Sleep(10)
WEnd
$script_ini_file = @ScriptDir & "\file.ini"
; прочитаем из файла значения горячих клавиш и назначим их в системе
$hk1 = IniRead($sчcript_ini_file, "HotKeys", "Proc1", BitOR($CK_CONTROL, $VK_RETURN))
$hk2 = IniRead($script_ini_file, "HotKeys", "Proc2", BitOR($CK_SHIFT, $VK_F1))
$hk3 = IniRead($script_ini_file, "HotKeys", "Proc3", BitOR($CK_SHIFT, $VK_F2))
_HotKeyAssign($hk1, 'Proc1', -1)
_HotKeyAssign($hk2, 'Proc2', -1)
_HotKeyAssign($hk3, 'Proc3', -1)
;цикл ожидания
While 1
Sleep(10)
WEnd
...
GUICreate("", 451, 224, 27, 82, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $StartMenu)
GuiCtrlCreateTab(0,0,401,224,$TCS_BUTTONS + $TCS_MULTILINE + $TCS_RAGGEDRIGHT + $TCS_RIGHTJUSTIFY + $TCS_FLATBUTTONS, 0x00000020)
GUICtrlCreateTabItem("[1]")
$t0hk1 = _GUICtrlCreateHotKeyInput(0,20,30,75,15,0,0x00000020)
...
...
; При нажатии на кнопку
$hotkey1 = _GUICtrlReadHotKeyInput($t0hk1)
_HotKeyAssign($hotkey1,'t0hk1')
...
...
; начало функции
Func t0hk1()
Send("Проверка скрипта")
MsgBox(0,0,"123123123")
EndFunc
Opt("SendKeyDelay", 40)
Opt("SendKeyDownDelay",40)
#include <Misc.au3>
#Include <HotKey.au3>
Global Const $VK_F12 = 0x7B
_HotKey_Assign($VK_F12, 'Message', BitOR($HK_FLAG_NOBLOCKHOTKEY,$HK_FLAG_DEFAULT, $HK_FLAG_EXTENDEDCALL))
While 1
Sleep(10)
WEnd
Func Message($iKey)
Send ("{F11}")
;MsgBox(0, 'Hot key Test Message', 'F12 (0x' & Hex($iKey, 4) & ') has been pressed!')
EndFunc
#include <Misc.au3>
#include <HotKey.au3>
#include <vkConstants.au3>
Dim $size[2] = [1280,1024]
AutoItSetOption("MouseCoordMode", 2)
$sProcName3 = "pzrun.exe"
If Not ProcessExists($sProcName3) Then Run($sProcName3)
_HotKey_Assign($VK_F9, 'kill0', BitOR($HK_FLAG_NOBLOCKHOTKEY,$HK_FLAG_DEFAULT, $HK_FLAG_EXTENDEDCALL))
While 1
Sleep(200)
WEnd
Func kill0($iKey)
_HotKey_Disable($iKey)
;#cs
Send ('{ESC}')
;MouseClick("left",$size[0]/2,$size[1]/2-142,1,3)
MouseMove($size[0]/2,$size[1]/2-142,0)
Sleep(50)
MouseDown("left")
Sleep(20)
MouseUp("left")
;#ce
Exit
EndFunc
$sProcName2 = "pzavt.exe"
Do
If Not ProcessExists($sProcName2) Then Run($sProcName2)
Sleep(1000)
Until 0
_HotKey_Assign($VK_F9, 'kill0', BitOR($HK_FLAG_NOBLOCKHOTKEY,$HK_FLAG_DEFAULT, $HK_FLAG_EXTENDEDCALL),$Client)
While 1
_HotKey_Enable()
Sleep(200)
WEnd
Func kill0($iKey)
_HotKey_Disable($iKey)
Send ('{ESC}')
EndFunc
Какое отношение Ваш вопрос имеет к текущей теме?Никогда не мог понять этот кусок посреди кода
>"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\d\config_windows\autoit\hotk.au3"
"C:\d\config_windows\autoit\hotk.au3" (7) : ==> Unknown function name.:
_HotKeyAssign($VK_F12, 'Message', BitOR($HK_FLAG_DEFAULT, $HK_FLAG_EXTENDEDCALL))
^ ERROR