ahk帮助文档
adventure
:
是autoahk编辑器的升级
快捷键
:
注释:ctrl + q
复制一行:ctrl + ⬇
#SingleInstance
:
确定脚本已在运行时是否允许再次运行.
~
添加这个符号后,激发热键时, 不会屏蔽(被操作系统隐藏) 热键中按键原有的功能。
SetTitleMatchMode
:定义wintitle的的模式
1: 默认行为. 窗口标题必须以指定的 WinTitle 开头才能匹配.
2: 窗口标题的任意位置包含 WinTitle 才能匹配.
3: 窗口标题必须和 WinTitle 完全一致才能匹配.
跳过对话框, 自动替换旧实例.
#SingleInstance force
#NoEnv ;启用环境变量
热字串:使用空白时还会出现
O,(omit)表示忽略终止符,即不需要使用空白终止符;
R,原样输出;
C,区分大小写;
b0,不会删除原字符
:*b0:::
{left 8}{Space}color{space}={space}`“`”{Right}
#
Send
:
a
键忽略a
的输出a
键在a
后循环输出b
时,出现对应的内容a:: {
send "baceh"
}
$b:: send "bcbbd"
综上:使用$
可以将字符串原内容输出禁用按键
>#:: return ;禁用 → win键
hotkey, a, 标签
hotkey, a, off
return
标签:
msgbox, a
return
脚本流程中,多次创建同一个热键,热键功能指向最后一次代码运行的指向标签,最终执行为3
hotkey, a, 标签1
hotkey, a, 标签2
hotkey, a, 标签3
return
标签1:
msgbox, 1
return
标签2:
msgbox, 2
return
标签3:
msgbox, 3
return
热键嵌套
; 按下a/b/c任意一个键,输出l
a:: | a::
b:: | b::
c::send, l | c:: ; %A_ThisHotkey% 保存了本次按下的热键
| send l
| return
添加钩子,防止热键冲突
; 加钩子前 直接输出lll
1::send, a
a::msgbox, lll
; 加钩子后 不会发生冲突
1::send, a
$a::msgbox, lll
Click [ Options ]
Options
:Coords, WhichButton, ClickCount, DownOrUp 和/或 Relative. 如果省略所有项目, 在鼠标光标的当前位置执行单次左键点击.
Coords
:如果省略, 则使用鼠标的当前位置. 否则, 请指定在点击前, 鼠标光标要移动到的 X 和 Y 坐标. 例如, Click “100 200” 在特定位置点击鼠标左键. 坐标相对于活动窗口的客户端区域, 除非曾使用 CoordMode 更改了这个设置. 如果省略, 则使用光标的当前位置.
CoordMode "ToolTip", "Screen"
WhichButton
:默认为 Left. 可指定 Left, Right, Middle(或只是这些名称的首字母); X1(第四个按钮) 或 X2(第五个按钮). 例如, Click “Right”
Relative
:相对当前鼠标位置
inf := InputBox([Prompt, Title, Options, Default])
:输入对话框
Prompt
:提示文本
Title
:标题
Options
:类型,eg:Password
inf.value(获取对象输入的文本)
inf.result(获取对象输入框的返回值),输入框是如何关闭的: OK, Cancel 或 Timeout.
KeyWait, KeyName [, Options]
:等待按键的状态
Options
:
为空,表示无限期等待;
D: 等待按键被按下
T: 超时(例如 T3). 超时前等待的秒数, 超时后设置 ErrorLevel 为 1.
Run, Target [, WorkingDir, Options, OutputVarPID]
RunWait, Target [, WorkingDir, Options, OutputVarPID]
Options
:
省略, 命令正常运行 Target, 并且当 Target 不能启动时显示警告对话框.
Max: 最大化运行
Min: 最小化运行
Hide: 隐藏运行(不能和上面任意一个选项组合使用)
Winset(对指定的窗口进行各种设置)
内容太长,其帮助文档传送
SetKeyDelay
:设置每次Send系列的延迟
双击/open脚本
view – key history and script info
SC
:键盘的Scan Code
VK
:键盘的Virtual Key
使用PrintScreen键盘输出内容12345
SC137::Send 12345
VK2c::Send 12345
click命令
#SingleInstance Force
CoordMode "Mouse","Screen"
f1:: {
Click 1919,716,0
Click 1879,20
Sleep 3000
Click 1622,161
Sleep 1000
Click 1616,78
}
send,合并单元格
#SingleInstance Force
CoordMode "Mouse","Screen"
; 拆分单元格
f1:: {
send "{alt}"
send "h"
Sleep "200"
send "m"
Sleep "200"
send "u"
}
允许用户输入电话号码.
IB := InputBox("Please enter a phone number.", "Phone Number", "w640 h480")
if IB.Result = "Cancel"
MsgBox "You entered '" IB.Value "' but then cancelled."
else
MsgBox "You entered '" IB.Value "'."
鼠标在最上面改变音量
#SingleInstance Force
CoordMode "Mouse","Screen"
;MouseGetPos &x, &y
;w::
;{ ;获取坐标位置
;MouseGetPos &xpos, &ypos
;MsgBox "The cursor is at X" xpos " Y" ypos
;}
~WheelUp::{
MouseGetPos &x, &y
if (y==0){
Send "{Volume_Up}"
}
}
~WheelDown::{
MouseGetPos &x, &y
if (y==0){
Send "{Volume_Down}"
}
}
关闭视窗
#SingleInstance Force
;CoordMode "Mouse","Screen"
;使用ctrl alt f4关闭所有相同视窗
^!f4::
; 视窗存进 sClass
WinGetClass, sClass, A
; 关闭相同的类视窗
while WinExist("ahk_class " . sClass) {
WinClose
}
return
;使用鼠标左键和esc关闭当前窗口
~LButton & Escape::
WinGetActiveTitle ,title
Winclose %title%
return
#n:: run notepad
音量控制
!NumpadAdd:: Send {Volume_Up} ;//Alt + numpad plus
!NumpadSub:: Send {Volume_Down} ;//Alt + numpad minus
!Numpad0::Send {Volume_Mute} ;//Alt + numpad 0
语音报告今日时间
!F2::
date = %A_YYYY%年%A_MM%月%A_DD%日
Speak("今天日期是 " . date)
time = %A_Hour%点 %A_Min%分 %A_Sec%秒
Speak("现在时间是 " . time)
return
Speak(say) {
spovice:=ComObjCreate("sapi.spvoice")
spovice.Speak(say)
}
获取当前鼠标颜色
!a::
MouseGetPos, MouseX, MouseY
PixelGetColor, color, %MouseX%, %MouseY%, RGB
Clipboard := "#" . SubStr(color, 3) ;color = 0x......
MsgBox, Current color is `n %Clipboard%
return
按下鼠标中轮回到上层目录,在推特切下一个推文
~MButton::
WinGetClass,sClass,A
;//MsgBox class=%sClass%
;//FM=7-zip window, TFcFormMain=FreeCommander
if (sClass="TFcFormMain" || sClass="FM" || sClass="MultiCommander MainWnd") {
Send, {BS}
} else if (sClass="CabinetWClass") {
Send, !{up} ; 回向上一层目录
} else if (sClass="MozillaWindowClass" || sClass="Chrome_WidgetWin_1") {
WinGetTitle, sTitle, A
;//MsgBox title=%sTitle%
if (InStr(sTitle, "Gmail") > 0) {
Send {j}
} else if (InStr(sTitle, "Twitter") > 0) {
Send {j} ; 下一个推特
}
}
return
连续按2次Esc关闭当前视窗
~Esc::
Keywait, Escape, , t0.5 ; KeyWait读取键盘输入,如果0.5秒内不是按Escape则结束
if errorlevel = 1
return
else
Keywait, Escape, d, t0.1
if errorlevel = 0 ; 0.5秒内按了Escape,则再读第二个按键,若为Escape则关闭视窗
{
WinGetActiveTitle, Title
WinClose, %Title%
return
}
return ;若第二个按键不为Escape则结束
批量删除视窗
#SingleInstance Force
SetTitleMatchMode 2 ; 设置wintitle的匹配模式
#n::
run notepad
Return
^!f4::
WinGetTitle sTitle, A
; MsgBox %sTitle%
; InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]
InputBox sTitle, 视窗标题, 输入视窗标题名, , 300, 150, , , , , %sTitle%
if (sTitle = "nb") {
sTitle := "记事本" ;; 或 sTitle = 记事本
} else if (sTitle = "ie") {
sTitle := "Internet Explorer"
}
while WinExist(sTitle)
WinClose
Return
clipboard剪切功能
^+g::
current_clipboard = %Clipboard% ;把当前剪切板内容存储起来,剪切内容为文本
send ^c ; 复制字符串存入剪切板
Clipwait,1 ; 等待剪切板包含数据
Run http://www.google.com/search?h1=zh&q=%Clipboard%
Clipboard = %current_clipboard% ; 将剪切板内容恢复
!4::
run,"%A_WinDir%\system32\Snippingtool.exe"
sleep ,500
WinActive, "Snipping Tool"
send ,!m
send ,r ; 矩形截图
;send f ; 任意截图
return
#Persistent
RunWait, %ComSpec% /c dir C:\ >>C:\DirTest.txt, , Min ; 程序运行结束后才向下运行 ComSpec,为cmd
Run, C:\DirTest.txt
Run, properties C:\DirTest.txt
对当前窗口的操作
https://autohotkey.top/zh-cn/docs/commands/WinSet.htm#Examples
设计开关
; 单击a,连续点鼠标左键,再次单击,取消点击
a::settimer, 循环a功能标签, % (开关变量 := !开关变量) ? 1 : "off"
循环a功能标签:
send, {Lbutton}
return
F1::
if (onoff := !onoff)
MsgBox, 布尔值为%onoff%`n第一次开
else
MsgBox, 布尔值为%onoff%`n第二次关
Return
F1::
F1onoff := !F1onoff, F2onoff=0
SetTimer F2循环, Off
SetTimer F1循环, % F1onoff=0 ? "Off" : 50
ToolTip
return
F2::
F2onoff := !F2onoff, F1onoff=0
SetTimer F1循环, Off
SetTimer F2循环, % F2onoff=0 ? "Off" : 50
ToolTip
return
F1循环:
ToolTip F1循环%F1onoff%
return
F2循环:
ToolTip F2循环%F2onoff%
return
设计markdown文档快速标题
^1::
^2::
^3::
^5::
^6::
numHashes := Substr(A_Thishotkey, 2) ; "^1" -> "1"
Markdown_title(numHashes)
return
Markdown_title(numHashes){
Clipboard := ""
sendInput {home}
sendInput {SHIFT}+{End}
sleep 200
Clipwait ,1 ; 等待剪切板包含数据
text := Clipboard
text := RegExReolace(text, "^#{1,6}\s(.*)", "$1")
SendInput {del}
SendInput {home}{# numHashes}{End}
}
常用热键整理
https://www.autoahk.com/archives/36311#H2-12
微知识点整理
https://www.autoahk.com/archives/9195
参考:
基础到精通
文档