Тема: AHK/OFF: N.F.A.Q (Noob Frequently Asked Questions)
<-пробная версия, если сообщество одобрям-с->
-------------------------------------------------------------------------------
= =
= Здесь вы найдете примеры кода и ссылки на подсказки по логическим =
= схемам и синтаксису языка [b]AutoHotkey[/b]. =
= =
= v.0.0.4 =
-------------------------------------------------------------------------------
Синтаксис
- AHK: знак процента внутри выражений ;
AHK: Знак процента и задание опций GUI-элемента
так не правильно (синтаксис не корректный):
MsgBox, % h%A_Index+2%
так правильно:
j:=A_Index+2
MsgBox, % h%j%
- Указать, что число записано в шестнадцатеричном формате, а не в десятичном (например 2212) :
var := 2212 ; записываем десятичное, но на самом деле собираемся использовать как шестнадцатеричное.
H1:="0x" var
-AHK: Запись масива в INI файл
indexA := [1,2,3,4,5]
Splitpath, A_ScriptName,,,, fileName
IniName:= A_ScriptDir . "\" . fileName . ".ini"
Loop % indexA.MaxIndex()
{
indexList := indexList indexA[A_Index] ","
}
IniWrite, %indexList%, % IniName, Settings, indexList
- Считать несколько заголовков окон
SetTitleMatchMode, 2
WinGet, List, List, Блокнот
Loop % List
WinGetTitle, Title%A_Index%, % "ahk_id" List%A_Index%
Алгоритмы
- Задержка срабатывания выборочной горячей клавиши - на примере ЛевогоШифта
*LShift::
sleep 1000
if GetKeyState("LShift", "P")
SendInput {LShift Down}
Return
*LShift Up:: SendInput {LShift Up}
- Остановка (Пауза) скрипта при нажатии определенных клавиш (например Alt, Ctrl, Shft)
Loop
{
if !(GetKeyState("Alt", "P") || GetKeyState("Ctrl", "P") || GetKeyState("Shift", "P"))
Send {F7}
Sleep, 100
}
- Укороченная запись нескольких горячих клавиш с похожими действиями
f11::
f12::
send, 1
if (A_ThisHotkey <> "f12") {
send, 2
send, 3
send, 4
}
send, 5
return
- Перетаскивание GUI-окна за любую его часть - в каждой gLabel придется вставить конструкцию WinMove(WinID) , if moved..
Button:
WinMove(WinID)
if moved
return
MsgBox, Button
return
WinMove(WinID)
{
global moved, hGui
CoordMode, Mouse
SetWinDelay, -1
SetBatchLines, -1
moved:=
MouseGetPos, Start_X, Start_Y
WinGetPos, X_Win, Y_Win,,, ahk_id %WinID%
While GetKeyState("LButton", "P")
{
MouseGetPos, Current_X, Current_Y
moved := (Current_X != Start_X || Current_Y != Start_Y) ? 1 : ""
WinMove, ahk_id %WinID%,, X_Win + Current_X - Start_X, Y_Win + Current_Y - Start_Y
Sleep, 10
}
}
~LButton::
MouseGetPos,,, WinID
if (WinID = hGui)
WinMove(WinID)
return
- Получать сообщение о активации\деактивации окон в системе
CoordMode, ToolTip, Screen
DllCall("RegisterShellHookWindow", "UInt", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellProc")
OnExit, Exit
Return
ShellProc(nCode, wParam)
{
static A := 1
If (nCode = 4)
{
WinGet, Process, ProcessName, % !wParam ? "A" : "ahk_id " wParam
ToolTip % A++ "`n`n" Process, 15, 15
}
}
Exit:
DllCall("DeregisterShellHookWindow", "UInt", A_ScriptHwnd)
ExitApp
- Запоминание данных GUI-элементов (на пример - CheckBox)
Философия
- Диалог о тщетности коментописания
- Что приходится делать читающему, чтобы понять вопрос.