AutoHotkey

Материал из DZWIKI
(перенаправлено с «Autohotkey»)
Перейти к навигации Перейти к поиску

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

Вопросы и ответы

Автоматизация ввода текста

Мне нужно ввести текст содержащий фигурные скобки
: Для ввода теста содержащего фигурные скобки, например {привет} введите:
{{}привет{}}
— т.е. мы заключаем каждую фигурную скобку в пару фигурных скобок.

Ссылки

Документация