ahk 初识

AutoHotkey 介绍

AutoHotkey 程序本身不做任何事情; 它需要一个脚本来告诉它该做什么。脚本只是一个简单的以 .ahk 作为扩展名的文本文件, 其中包含了程序的指令, 像配置文件, 但功能更强大。一个脚本可以执行一个动作然后退出, 但大多数脚本定义了一些热键, 当热键按下时, 热键后面跟着的一个或多个动作将会执行。

使用

快捷键改写

1
^q::Send "!{F4}" ; ctrl + q 用于关闭窗口

打开网址

1
#z::Run "https://www.autohotkey.com" ; Win+Z

运行程序

1
2
3
4
5
6
7
8
9
10
11
^!n::  ; Ctrl+Alt+N
{
if WinExist("无标题 - Notepad")
WinActivate
else
Run "Notepad"
}

!1::Run "explorer"

Run('jiejian64.exe /script lib\ChangeBrightness.ahk')

启动文件夹

1
!d::Run "D:"

文本操作

1
2
3
4
5
6
7
; 插入 email
:C*:xem::acc8227@sina.com
; 插入 qq
:C*:xqq::133459866

; 快捷操作-插入双引号 ctrl + shift + "
^+"::Send '""{Left}'

窗口管理

1
2
3
4
5
6
7
8
9
10
!q::WinClose "A" ; 关闭窗口

; alt + f fullscreen 最大化或还
!f::{
minMax := WinGetMinMax("A")
if minMax = 1
WinRestore "A"
else
WinMaximize "A"
}

鼠标增强

1
2
3
4
5
6
7
8
9
#HotIf mouseIsOverTaskBarOrLeftEdge()
WheelUp::Send "{Volume_Up}"
WheelDown::Send "{Volume_Down}"

; 鼠标在左侧边缘或者在任务栏上
mouseIsOverTaskBarOrLeftEdge() {
MouseGetPos &OutputVarX,, &Win
return OutputVarX == 0 or WinExist("ahk_class Shell_TrayWnd" " ahk_id " Win)
}

热字符串替换

C 区分大小写,* 表示不需要额外键入终止符

1
2
3
:C*:xwx::😄 ; 微笑

:C*:xnb::很牛呀

其他

禁用快捷键

1
^v::return

dll 使用示例

1
2
WhichButton := DllCall("MessageBox", "Int", 0, "Str", "Press Yes or No", "Str", "Title of box", "Int", 4)
MsgBox "You pressed button #" WhichButton

动态创建热键

1
2
3
4
5
6
HotIfWinActive "ahk_exe Code.exe"
Hotkey "!n", MyFunc ; 创建一个只在记事本中工作的热键.

MyFunc(ThisHotkey) {
MsgBox "You pressed " ThisHotkey
}

一些 ahk 内置函数

Suspend 禁用或启用所有的或选择的热键和热字串
Pause 暂停脚本的当前线程 感觉不怎么能用到

左键辅助

在鼠标左键按下的情况在 再按下 a 键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#HotIf GetKeyState("LButton", "P")
a::{
; 没有获取到文字直接返回,否则若选中的是网址则打开,否则进行百度搜索
text := GetSelectedText()
if (text) {
if (text ~= "i)^(?:https?://)?([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$") {
if not InStr(text, 'http') {
text := "http://" . text
}
Run text
} else {
Run "https://www.baidu.com/s?wd=" . text
}
}
}
#HotIf

闭包的使用

1
2
3
4
5
6
7
app_hotkey2(app_title) {
isActivate() ; 这是 app_title 和 app_path 的闭包.
{
return WinActive(app_title)
}
return isActivate
}

记录

ahk 的版本

1
2
3
4
5
6
7
8
9
10
11
; windows 版本
;
; Windows 11 [10.1.xxxxx]
; Windows 10 [10.0.10240] (29.07.2015)
; Windows 8.1 [6.3.9200]
; Windows 8 [6.2.9200]
; Windows 7 service pack 1(SP1) [6.1.7601]
; Windows 7 [6.1.7600]
; Windows Vista service pack 2(SP2) [6.0.6002]
; Windows Vista [6.0.6000]
; Windows XP service pack 3(SP3) [5.1.2600]