AutoHotkey: различия между версиями
Перейти к навигации
Перейти к поиску
Dzmuh (обсуждение | вклад) Нет описания правки |
Dzmuh (обсуждение | вклад) (→Ссылки) |
||
| (не показано 7 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
{{Заготовка}} | {{Заготовка}} | ||
'''AutoHotkey''' — свободно распространяемый [[Язык программирования|язык]] для [[Автоматизация|автоматизации]] выполнения задач в [[Microsoft Windows]]. | '''AutoHotkey''' — свободно распространяемый [[Язык программирования|язык]] для [[Автоматизация|автоматизации]] выполнения задач в [[Microsoft Windows]]. | ||
== Примеры == | |||
'''Программа «Привет, мир»:'''<source lang="autohotkey" line="1" start="1"> | |||
; Выводит стандартное окно с названием «Пример», надписью «Привет, мир!» и кнопкой «ОК». | |||
MsgBox, 0, Пример, Привет, мир! | |||
</source>'''Создание диалогового окна:'''<syntaxhighlight lang="autohotkey" line="1"> | |||
; Выводит диалоговое окно с кнопками «Да» и «Нет». В случае нажатия «Да» — выход из программы. | |||
MsgBox, 4, Вопрос, Хотите выйти из программы? | |||
IfMsgBox, Yes | |||
ExitApp | |||
else | |||
MsgBox, Спасибо что остались с нами. | |||
</syntaxhighlight> | |||
'''Запуск блокнота:''' | |||
<syntaxhighlight lang="autohotkey" line="1"> | |||
Run, notepad.exe | |||
</syntaxhighlight> | |||
'''Будильник на 12 часов и 00 минут:''' | |||
<syntaxhighlight lang="autohotkey" line="1"> | |||
SetTimer, CheckTime, 300 ; Установка таймера на метку раз в 300 миллисекунд. | |||
return ; Конец раздела автоматического выполнения. Сценарий приостанавливается, пока не сработает метка. | |||
CheckTime: | |||
if (A_Hour == 12 && A_Min == 00) ; Если время настало. | |||
{ | |||
ToolTip, Будильник. ; Выводим сообщение. | |||
Sleep, 3000 ; Ждем 3 секунды. | |||
ToolTip ; Скрываем сообщение. | |||
} | |||
return | |||
</syntaxhighlight>'''Скрытие/Показ курсора при нажатии Win + C.'''<syntaxhighlight lang="autohotkey" line="1"> | |||
; Скрывает/Показывает курсор мыши при нажатии клавиши Win + C. | |||
OnExit, ShowCursor ; При завершении работы скрипта, показываем курсор. | |||
return ; Конец раздела автоматического выполнения. Сценарий приостанавливается, пока пользователь не сделает что-нибудь. | |||
ShowCursor: | |||
SystemCursor("On") | |||
ExitApp | |||
#c::SystemCursor("Toggle") ; При нажатии на Win + C показываем/скрываем курсор. | |||
SystemCursor(status := 1) | |||
{ | |||
static AndMask, XorMask, $, hСursor | |||
, c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; Системный курсор. | |||
, b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 ; Пустой курсор. | |||
, h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13 ; Дескрипторы курсора по умолчанию. | |||
if (status = "Init" or status = "I" or $ = "") ; Инициализация при первом вызове. | |||
{ | |||
$ = h ; Активный курсор по умолчанию. | |||
VarSetCapacity( hСursor,4444, 1 ) | |||
VarSetCapacity( AndMask, 32*4, 0xFF ) | |||
VarSetCapacity( XorMask, 32*4, 0 ) | |||
system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650 | |||
StringSplit c, system_cursors, `, | |||
Loop %c0% | |||
{ | |||
hСursor := DllCall("LoadCursor", "Ptr", 0, "Ptr", c%A_Index%) | |||
h%A_Index% := DllCall("CopyImage", "Ptr", hСursor, "UInt", 2, "Int", 0, "Int", 0, "UInt", 0) | |||
b%A_Index% := DllCall("CreateCursor", "Ptr", 0, "Int", 0, "Int", 0, "Int", 32, "Int", 32, "Ptr", &AndMask, "Ptr", &XorMask) | |||
} | |||
} | |||
if (status = 0 or status = "Off" or $ = "h" and (status < 0 or status = "Toggle" or status = "T")) | |||
$ = b ; Используем пустой курсор. | |||
else | |||
$ = h ; Используем системный курсор. | |||
Loop %c0% | |||
{ | |||
hСursor := DllCall( "CopyImage", "Ptr",%$%%A_Index%, "UInt",2, "Int",0, "Int",0, "UInt",0 ) | |||
DllCall("SetSystemCursor", "Ptr", hСursor, "UInt", c%A_Index%) | |||
} | |||
} | |||
</syntaxhighlight>'''Пример скрипта с использованием графического интерфейса:'''<syntaxhighlight lang="autohotkey" line="1"> | |||
Gui, Add, Text,, Имя: | |||
Gui, Add, Text,, Фамилия: | |||
Gui, Add, Edit, vFirstName ym ; Параметр ym запускает новый столбец элементов управления. | |||
Gui, Add, Edit, vLastName | |||
Gui, Add, Button, default, OK ; Метка ButtonOK (если она существует) будет запущена при нажатии кнопки. | |||
Gui, Show,, Простой Пример Ввода | |||
return ; Конец раздела автоматического выполнения. Сценарий приостанавливается, пока пользователь не сделает что-нибудь. | |||
ButtonOK: | |||
Gui, Submit ; Сохраняет входные данные пользователя в связанную переменную каждого элемента управления. | |||
MsgBox Ваша Имя Фамилия: "%FirstName% %LastName%". | |||
GuiClose: ; Запускается при закрытии интерфейса. | |||
ExitApp | |||
</syntaxhighlight> | |||
== Вопросы и ответы == | |||
=== Автоматизация ввода текста === | |||
; Мне нужно ввести текст содержащий фигурные скобки :: Для ввода теста содержащего фигурные скобки, например <code>{привет}</code> введите: | |||
: <pre>{{}привет{}}</pre> — т.е. мы заключаем каждую фигурную скобку в пару фигурных скобок. | |||
== Ссылки == | == Ссылки == | ||
{{википедия|AutoHotkey}} | |||
* {{official|https://www.autohotkey.com/}} | * {{official|https://www.autohotkey.com/}} | ||
* {{github|AutoHotkey|AutoHotkey}} | |||
* https://www.fosshub.com/AutoHotkey.html | * https://www.fosshub.com/AutoHotkey.html | ||
; Документация | |||
* [https://www.autohotkey.com/boards/viewforum.php?f=46 Официальный форум на русском] | |||
* [https://www.autohotkey.com/docs/v1/ Документация к AutoHotkey v1.1] | |||
* [https://www.autohotkey.com/docs/v2/ Документация к AutoHotkey v2] | |||
[[Категория:Программное обеспечение по алфавиту]] | [[Категория:Программное обеспечение по алфавиту]] | ||
[[Категория:Программное обеспечение с лицензией GNU GPL]] | |||
[[Категория:Свободное программное обеспечение, написанное на C++]] | |||
[[Категория:Свободное программное обеспечение только под Windows]] | |||
[[Категория:Свободное системное программное обеспечение]] | |||
[[Категория:Скриптовые языки]] | |||
Текущая версия от 17:57, 22 мая 2023
Это заготовка статьи. |
AutoHotkey — свободно распространяемый язык для автоматизации выполнения задач в Microsoft Windows.
Примеры
Программа «Привет, мир»:
; Выводит стандартное окно с названием «Пример», надписью «Привет, мир!» и кнопкой «ОК».
MsgBox, 0, Пример, Привет, мир!
Создание диалогового окна:
; Выводит диалоговое окно с кнопками «Да» и «Нет». В случае нажатия «Да» — выход из программы.
MsgBox, 4, Вопрос, Хотите выйти из программы?
IfMsgBox, Yes
ExitApp
else
MsgBox, Спасибо что остались с нами.
Запуск блокнота:
Run, notepad.exe
Будильник на 12 часов и 00 минут:
SetTimer, CheckTime, 300 ; Установка таймера на метку раз в 300 миллисекунд.
return ; Конец раздела автоматического выполнения. Сценарий приостанавливается, пока не сработает метка.
CheckTime:
if (A_Hour == 12 && A_Min == 00) ; Если время настало.
{
ToolTip, Будильник. ; Выводим сообщение.
Sleep, 3000 ; Ждем 3 секунды.
ToolTip ; Скрываем сообщение.
}
return
Скрытие/Показ курсора при нажатии Win + C.
; Скрывает/Показывает курсор мыши при нажатии клавиши Win + C.
OnExit, ShowCursor ; При завершении работы скрипта, показываем курсор.
return ; Конец раздела автоматического выполнения. Сценарий приостанавливается, пока пользователь не сделает что-нибудь.
ShowCursor:
SystemCursor("On")
ExitApp
#c::SystemCursor("Toggle") ; При нажатии на Win + C показываем/скрываем курсор.
SystemCursor(status := 1)
{
static AndMask, XorMask, $, hСursor
, c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; Системный курсор.
, b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 ; Пустой курсор.
, h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13 ; Дескрипторы курсора по умолчанию.
if (status = "Init" or status = "I" or $ = "") ; Инициализация при первом вызове.
{
$ = h ; Активный курсор по умолчанию.
VarSetCapacity( hСursor,4444, 1 )
VarSetCapacity( AndMask, 32*4, 0xFF )
VarSetCapacity( XorMask, 32*4, 0 )
system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
StringSplit c, system_cursors, `,
Loop %c0%
{
hСursor := DllCall("LoadCursor", "Ptr", 0, "Ptr", c%A_Index%)
h%A_Index% := DllCall("CopyImage", "Ptr", hСursor, "UInt", 2, "Int", 0, "Int", 0, "UInt", 0)
b%A_Index% := DllCall("CreateCursor", "Ptr", 0, "Int", 0, "Int", 0, "Int", 32, "Int", 32, "Ptr", &AndMask, "Ptr", &XorMask)
}
}
if (status = 0 or status = "Off" or $ = "h" and (status < 0 or status = "Toggle" or status = "T"))
$ = b ; Используем пустой курсор.
else
$ = h ; Используем системный курсор.
Loop %c0%
{
hСursor := DllCall( "CopyImage", "Ptr",%$%%A_Index%, "UInt",2, "Int",0, "Int",0, "UInt",0 )
DllCall("SetSystemCursor", "Ptr", hСursor, "UInt", c%A_Index%)
}
}
Пример скрипта с использованием графического интерфейса:
Gui, Add, Text,, Имя:
Gui, Add, Text,, Фамилия:
Gui, Add, Edit, vFirstName ym ; Параметр ym запускает новый столбец элементов управления.
Gui, Add, Edit, vLastName
Gui, Add, Button, default, OK ; Метка ButtonOK (если она существует) будет запущена при нажатии кнопки.
Gui, Show,, Простой Пример Ввода
return ; Конец раздела автоматического выполнения. Сценарий приостанавливается, пока пользователь не сделает что-нибудь.
ButtonOK:
Gui, Submit ; Сохраняет входные данные пользователя в связанную переменную каждого элемента управления.
MsgBox Ваша Имя Фамилия: "%FirstName% %LastName%".
GuiClose: ; Запускается при закрытии интерфейса.
ExitApp
Вопросы и ответы
Автоматизация ввода текста
- Мне нужно ввести текст содержащий фигурные скобки
- : Для ввода теста содержащего фигурные скобки, например
{привет}введите: {{}привет{}}— т.е. мы заключаем каждую фигурную скобку в пару фигурных скобок.
Ссылки
- autohotkey.com — официальный сайт AutoHotkey
- Проект AutoHotkey на сайте GitHub
- https://www.fosshub.com/AutoHotkey.html
- Документация