autohotkey 常见代码段

发送文字

F3::
send,1111  
return    

执行程序前先关闭程序

#SingleInstance force            ;;执行程序前先关闭程序

最大化窗口

F9::
WinMaximize,A    ;;最大化当前窗口      
return    

恢复原来窗口的大小
 

F10::
WinRestore, A       ;;恢复原来的窗口大小
return    

置顶当前窗口

CapsLock & p::
winset,AlwaysOnTop,, A		;;置顶当前程序的窗口
Return

打开任务管理器

^!NumpadIns::		;;打开任务管理器
^!Numpad0::										IfWinExist, Windows 任务管理器
{WinHide, Windows 任务管理器
}else
{
run,taskmgr
WinActivate, Windows 任务管理器Winshow, Windows 任务管理器
}Return  

打开记事本

#N::
Run Notepad ;;打开记事本
return 

打开计算器

#J::				;;打开计算器
Run, calc
return

用Alt来替换系统原有的复制、粘贴和剪切键

!c::
Send,^c 			;;用Alt+C替换系统的复制键Ctrl+C
Return!x::
Send,^x 			;;用Alt+X替换系统的剪切键Ctrl+X
Return!v::
Send,^v 		;;用Alt+V替换系统的粘贴键Ctrl+V 
Return

将字符串中的空格替换为换行符

a = 1 2 34
stringreplace, out, a, ` , `n, All
msgbox, %out%

划词一键进行百度翻译:

F9::            ;~百度一键翻译
send,^cLoop
{StringReplace, clipboard,clipboard, `r`n,%A_SPACE%, UseErrorLevelif ErrorLevel = 0 ;全部替换完,退出循环break
}
Loop
{StringReplace, clipboard,clipboard, %A_SPACE%%A_SPACE%, %A_SPACE%, UseErrorLevel;替换两个空格为一个空格if ErrorLevel = 0break
}IfWinExist, 百度翻译
{WinActivate, 百度翻译IfWinActive, 百度翻译{send,^w}}str = %clipboard%
stringreplace, out, str, ` , `%20, Allbaidu = https://fanyi.baidu.com/?#en/zh/
URL = %baidu%%out%
run,%URL%returnF10::           ;~谷歌一键翻译
send,^cLoop
{StringReplace, clipboard,clipboard, `r`n,%A_SPACE%, UseErrorLevelif ErrorLevel = 0 ;全部替换完,退出循环break
}
Loop
{StringReplace, clipboard,clipboard, %A_SPACE%%A_SPACE%, %A_SPACE%, UseErrorLevel;替换两个空格为一个空格if ErrorLevel = 0break
}IfWinExist, Google 翻译
{WinActivate, Google 翻译IfWinActive, Google 翻译{send,^w}}str = %clipboard%
stringreplace, out, str, ` , `%20, AllGoogle = https://translate.google.cn/#view=home&op=translate&sl=en&tl=zh-CN&text=
URL = %Google%%out%
run,%URL%returnF11::               ;~搜狗一键翻译
send,^cLoop
{StringReplace, clipboard,clipboard, `r`n,%A_SPACE%, UseErrorLevelif ErrorLevel = 0 ;全部替换完,退出循环break
}
Loop
{StringReplace, clipboard,clipboard, %A_SPACE%%A_SPACE%, %A_SPACE%, UseErrorLevel;替换两个空格为一个空格if ErrorLevel = 0break
}IfWinExist, 搜狗翻译
{WinActivate, 搜狗翻译IfWinActive, 搜狗翻译{send,^w}    
}str = %clipboard%
stringreplace, out, str, ` , `%20, Allsougou = https://fanyi.sogou.com/?keyword=
URL = %sougou%%out%
run,%URL%return

显示当前系统时间(年月日)

!w::                        ;;显示当前的系统时间(年月日)
a = %clipboard%
d = %A_YYYY%.%A_mm%.%A_dd%
clipboard = %d%
Send ^v
sleep,100
clipboard = %a%
return

显示当前的系统时间(年月日-时分秒)


!e::                        ;;显示当前的系统时间(年月日-时分秒)
a = %clipboard%
sleep,100
d = %A_YYYY%.%A_mm%.%A_dd%-%A_Hour%:%A_Min%:%A_Sec%
clipboard = %d%
send,^v
sleep,100
clipboard = %a%
return

使用百度搜索关键词

!f::				;;使用百度搜索关键词
send,^c
run,https://www.baidu.com/s?wd=%clipboard%
return

点击鼠标50次

F1::                                      ;;点击鼠标50次
Loop 50
{
MouseClick
}
Return  

关闭当前窗口

`:: 
send,!{F4}	;;关闭当前窗口
return

快速设置热词

!-::                                                       ;快速设置热词
send,::我::{tab}{tab}{tab}{tab}{tab}{tab}{tab}{tab}{tab}{tab}{;}{;}
send,{Enter}
send,{Enter}{R}eturn{Space}
return

快速设置热键

!0::                                                       ;快速设置热键
send,::{tab}{tab}{tab}{tab}{tab}{tab}{tab}{tab}{tab}{tab}{;}{;}
send,{Enter}{Enter}{Enter}{Enter} 
send,{R}eturn {Space}
send,{Home}{BackSpace}
send,{Up}{Up}{Up}return

anki中用到的代码块

#IfWinActive ahk_class QWidget   Esc::                                      ;;WinHide, 添加
send,!sWinWait, 耗时 
WinHide,耗时WinShow, 添加
WinWait, 添加IfWinNotActive, 添加, , WinActivate, 添加, 
WinWaitActive, 添加, Send, ^vReturn F5:: 
send,^+!c ;;将F5作为Anki填空题不改变序号的快捷键
returnF6:: 
send,^+c ;;将F6作为Anki填空题的快捷键
returnF7::		;;在中文输入法的情况下设置Latex行间公式环境
Send,^{Space}
Send,^t
Send,e
Send, ^{Space}
send,+
ReturnF8::		;;在粘贴文本时直接加上anki的LaTeX环境并且进行填空题挖空
send,^x
sleep,20
A := clipboard
b ={{c1::[$]
c=[/$]}}
d= %b% %A% %c%
sleep,20
clipboard = % d 
send,^v 
sleep,20
clipboard := A
sleep,20ReturnF9:: Send, {SHIFTDOWN}{HOME}{SHIFTUP} 
send,{CTRLDOWN}x{CTRLUP}A:= clipboard
b =[$]
c=[/$]
d= %b% %A% %c%
sleep,50
clipboard = % d 
send,^v 
sleep,50
clipboard := A
sleep,50Send, {SPACE}
Send, {SHIFTDOWN}{CTRLDOWN}{END}{SHIFTUP}{CTRLUP}
Send, {CTRLDOWN}x{CTRLUP}A := clipboard
b ={{c1::[$]
c=[/$]}}
d= %b% %A% %c%
sleep,50
clipboard = % d 
send,^v 
sleep,50
clipboard := A
sleep,50return!e::                            ;;在粘贴文本时直接加上anki的LaTeX环境
A:= clipboard
b =[$]
c=[/$]
d= %b% %A% %c%
sleep,50
clipboard = % d 
send,^v 
sleep,50
clipboard := A
sleep,50
return!t::
A := clipboard
b ={{c1::[$]
c=[/$]}}
d= %b% %A% %c%
sleep,50
clipboard = % d 
send,^v 
sleep,50
clipboard := A
sleep,50
return#IfWinActive 

限定程序只运行在Word中

#IfWinActive ahk_class OpusApp   ;;这个是对应的程序的类别名!e::                        ;;显示当前的系统时间
a = %clipboard%
sleep,100
d = %A_Hour%:%A_Min%:%A_Sec%
clipboard = %d%send,{enter}
send,{up}
send,{backspace}
send,^e
send,^v
sleep,100
clipboard = %a%
send,{down}
return#IfWinActive

拷贝文件路径

^!c::	;一键拷贝文件的路径
; null= 
send ^c
sleep,200
clipboard=%clipboard% ;%null%
tooltip,%clipboard%
sleep,500
tooltip,
return

调节窗口透明化

#=:: ;窗口透明化增加或者减弱WinGet, ow, id, AWinTransplus(ow)return#-:: ;窗口透明化增加或者减弱WinGet, ow, id, AWinTransMinus(ow)return
WinTransplus(w){WinGet, transparent, Transparent, ahk_id %w%if transparent < 255transparent := transparent+10elsea = 1if transparentWinSet, Transparent, %transparent%, ahk_id %w%elseWinSet, Transparent, off, ahk_id %w%return
}
WinTransMinus(w){WinGet, transparent, Transparent, ahk_id %w%if transparent > 10transparent := transparent-10WinSet, Transparent, %transparent%, ahk_id %w%return
}

最大化/恢复窗口

#enter:: ;最大化/恢复窗口
WinGet,S,MinMax,A
if S=0WinMaximize,A
else if S=1WinRestore,A
else if S=-1WinRestore,A
return

最小化窗口

#m:: ;窗口最小化
WinMinimize, A
return

使用谷歌搜索多参数版

!o:: ;cosea典藏级原创代码之谷歌搜索终极版
run https://www.google.com/search?q=%clipboard% ;用google搜索剪切板的内容
clipboard1=%clipboard%&tbs=qdr:1,sbd:1
run https://www.google.com/search?q=%clipboard1% ;按时间排序
run https://www.google.com/search?q=%clipboard%&tbs=qdr:m ;只显示最近一个月信息
run https://www.google.com/search?q=%clipboard%&tbs=qdr:y ;只显示最近一年信息
run https://www.google.com/search?q=%clipboard%&as_filetype=pdf ;指定PDF文件
run https://www.google.com/search?q=%clipboard%&tbs=li:1 ;精确匹配
run https://www.google.com/search?&as_epq=%clipboard% ;完全匹配
run https://www.google.com/search?q=%clipboard% inurl:gov ;url包括gov的网站信息
run https://www.google.com/search?q=intitle:%clipboard% ;文章标题中包含关键词的结果
run https://www.google.com/search?q=%clipboard%&source=lnt&lr=lang_zh-CN|lang_zh-TW ;&source=lnt&lr=lang_zh-CN|lang_zh-TW,指定中文网页
run https://www.google.com/search?q=%clipboard%&tbm=isch&tbs=imgo:1 ;&tbm=isch指定搜索谷歌图片
run https://www.google.com/search?q=%clipboard%&tbm=isch&tbs=isz:l ;将URL更改为大尺寸图片&tbs=isz:l
run https://image.baidu.com/search/index?z=3&tn=baiduimage&word=%clipboard% ;z=3是大尺寸,z=9是特大尺寸
run https://www.behance.net/search?content=projects&sort=appreciations&time=week&featured_on_behance=true&search=%clipboard%
run https://www.zcool.com.cn/search/content?&word=%clipboard%
clipboard2=%clipboard%&tbm=isch&tbs=qdr:m,isz:l,imgo:1
run https://www.google.com/search?q=%clipboard2% ;为URL添加&tbs=qdr:m,只显示新近一个月内的图片,&tbs=imgo:1,显示图片大小
tooltip, 那晚,风也美,人也美。。。
sleep 1500
tooltip,
return

如何显示提示的话

!r::
tooltip, 小伙子,你好啊~
sleep 2000
tooltip,return

获取当前鼠标指针的位置并显示出来 

#a::  ;获取当前鼠标指针的位置
MouseGetPos, xpos, ypos
clipboard = %xpos%,%ypos%
a = 鼠标位置`(X,Y`) = %xpos%,%ypos%
tooltip, %a%
sleep 1000
tooltip,
return

清除所有的标点符号,并在标点符号处换行

F2:: ;清除所有标点符号,并在标点符号处换行
run notepad,,max
Loop
{
StringReplace, clipboard, clipboard, `, , `r`n, UseErrorLevel ;清除英文逗号
StringReplace, clipboard, clipboard, , , `r`n, UseErrorLevel ;清除中文逗号
StringReplace, clipboard, clipboard, `; , `r`n, UseErrorLevel ;清除英文分号
StringReplace, clipboard, clipboard, ; , `r`n, UseErrorLevel ;清除英文分号
StringReplace, clipboard, clipboard, . , `r`n, UseErrorLevel ;清除英文句号
StringReplace, clipboard, clipboard, 。 , `r`n, UseErrorLevel ;清除中文句号
StringReplace, clipboard, clipboard, : , `r`n, UseErrorLevel ;清除英文冒号
StringReplace, clipboard, clipboard, : , `r`n, UseErrorLevel ;清除中文冒号
StringReplace, clipboard, clipboard, ‘’ , `r`n, UseErrorLevel ;清除中文双引号1
StringReplace, clipboard, clipboard, “ , `r`n, UseErrorLevel ;清除中文双引号2
StringReplace, clipboard, clipboard, ” , `r`n, UseErrorLevel ;清除中文双引号3
StringReplace, clipboard, clipboard, ' , `r`n, UseErrorLevel ;清除英文双引号
StringReplace, clipboard, clipboard, 、 , `r`n, UseErrorLevel ;清除中文顿号
StringReplace, clipboard, clipboard, / , `r`n, UseErrorLevel ;清除右斜杠
StringReplace, clipboard, clipboard,  , `r`n, UseErrorLevel ;清除左斜杠
StringReplace, clipboard, clipboard, - , `r`n, UseErrorLevel ;清除短横线
StringReplace, clipboard, clipboard, —— , `r`n, UseErrorLevel ;清除长横线
StringReplace, clipboard, clipboard, = , `r`n, UseErrorLevel ;清除等号
StringReplace, clipboard, clipboard, + , `r`n, UseErrorLevel ;清除加号
StringReplace, clipboard, clipboard, ( , `r`n, UseErrorLevel ;清除中文左括号
StringReplace, clipboard, clipboard, ) , `r`n, UseErrorLevel ;清除中文右括号
StringReplace, clipboard, clipboard, ( , `r`n, UseErrorLevel ;清除英文左括号
StringReplace, clipboard, clipboard, ) , `r`n, UseErrorLevel ;清除英文右括号
StringReplace, clipboard, clipboard, 【 , `r`n, UseErrorLevel ;清除中文【
StringReplace, clipboard, clipboard, 】 , `r`n, UseErrorLevel ;清除中文】
StringReplace, clipboard, clipboard, [ , `r`n, UseErrorLevel ;清除[
StringReplace, clipboard, clipboard, ] , `r`n, UseErrorLevel ;清除]
StringReplace, clipboard, clipboard, ! , `r`n, UseErrorLevel ;清除英文感叹号
StringReplace, clipboard, clipboard, ! , `r`n, UseErrorLevel ;清除中文感叹号
StringReplace, clipboard, clipboard, ? , `r`n, UseErrorLevel ;清除中文问号
StringReplace, clipboard, clipboard, ? , `r`n, UseErrorLevel ;清除英文问号
StringReplace, clipboard, clipboard, < , `r`n, UseErrorLevel ;清除英文<
StringReplace, clipboard, clipboard, > , `r`n, UseErrorLevel ;清除英文>
StringReplace, clipboard, clipboard, 《 , `r`n, UseErrorLevel ;清除中文《
StringReplace, clipboard, clipboard, 》 , `r`n, UseErrorLevel ;清除英文》
StringReplace, clipboard, clipboard, @ , `r`n, UseErrorLevel ;清除@
StringReplace, clipboard, clipboard, # , `r`n, UseErrorLevel ;清除#
StringReplace, clipboard, clipboard, $ , `r`n, UseErrorLevel ;清除$
StringReplace, clipboard, clipboard, `% , `r`n, UseErrorLevel ;清除%
StringReplace, clipboard, clipboard, ^ , `r`n, UseErrorLevel ;清除^
StringReplace, clipboard, clipboard, & , `r`n, UseErrorLevel ;清除&
StringReplace, clipboard, clipboard, * , `r`n, UseErrorLevel ;清除*
StringReplace, clipboard, clipboard, `` , `r`n, UseErrorLevel ;清除`
StringReplace, clipboard, clipboard, `:: , `r`n, UseErrorLevel ;清除::
StringReplace, clipboard, clipboard, " , `r`n, UseErrorLevel ;清除"
StringReplace, clipboard, clipboard, { , `r`n, UseErrorLevel ;清除{
StringReplace, clipboard, clipboard, }, `r`n, UseErrorLevel ;清除}
StringReplace, clipboard, clipboard, |, `r`n, UseErrorLevel ;清除|
StringReplace, clipboard, clipboard, ·, `r`n, UseErrorLevel ;清除中文···
StringReplace, clipboard, clipboard, ~, `r`n, UseErrorLevel ;清除~
StringReplace, clipboard, clipboard, _ , `r`n, UseErrorLevel ;清除_if ErrorLevel = 0  ; 不需要再进行替换.break
}
sleep,200
send,^v
return

获取鼠标所在处的RGB值

#a:: ;获取RGB色
MouseGetPos, mouseX, mouseY
PixelGetColor, color, %mouseX%, %mouseY%, RGB
StringRight color,color,6
clipboard = %color%
msg = 当前坐标RGB颜色值的十六进制值为`#%color%.
tooltip, %msg%
sleep 1000
tooltip,
return

倒计时器

#t:: ;倒计时器
InputBox, time, 请输入一个时间(单位是秒)
time := time*1000
Sleep,%time%
msgbox 时间到!!!
return

无格式复制文本

#c:: ;复制并清除把任何复制的文件, HTML 或其他格式的文本转换为纯文本
send,^c
sleep,50
clipboard = %clipboard%   ; 把任何复制的文件, HTML 或其他格式的文本转换为纯文本
return

用AutoHotkey驱动蜂鸣器发出声音

#1:: ;用AutoHotkey驱动蜂鸣器发出声音
loop,10
{SoundBeep, 1000, 500   ;第一个参数为声音的频率,第二个参数为每次响的时间,每次响的时候中间会有一个非常小的间隔
}
return

发送一段文字

​
^!i::		;;
SendRaw, 
(LTrim123
)
Return  ​

连续复制文本内容


flag_copy := 0	;这个模式变量不可少,一定得有F1::		;这个键主要是用来设定复制的模式的
flag_copy := not flag_copy
sleep,50
if flag_copy = 1msgbox,打开连续复制功能!clipboard =
if flag_copy = 0msgbox,关闭连续复制功能!clipboard =
return!c::		
if flag_copy = 0
{Send,^c 			;;用Alt+C替换系统的复制键Ctrl+C
}
if flag_copy =1
{;~ msgbox,复制前剪切板的值为:%clipboard%var = %clipboard% ;新的叠加赋值send ^csleep,50myvar = %var%%clipboard%sleep,20clipboard := myvarsleep,20;~ msgbox,复制后剪切板的值为:%clipboard%
}
return

一键打开jupyter

::*note::                                       ;;
^!j::
run,cmd.exe
sleep,333
IfWinExist,ahk_class ConsoleWindowClass
{msgbox,1111WinActivate, ahk_class ConsoleWindowClassSleep, 333	IfWinActive, ahk_class ConsoleWindowClass{send,activate{enter}{space}torch{enter}{enter}sleep,333send,jupyter{enter}{space}notebook{enter}{enter} }
}Return 

python的代码块

将Windows路径中的左斜杠转化为右斜杠,变为python路径

^!p::		;;将路径中的左斜杠转化为右斜杠
path_str := clipboard
stringreplace, out, path_str, ` , `/, All
Clipboard := out
send,^v
Return  

发送python的代码块

::*opencv::		;;
SendRaw, 
(LTrim
import cv2 as cv    #导入OpenCV模块
path = ''
img = cv.imread(path)
cv.imshow('img',img)
cv.waitKey(0)
)
Return  

更改软件的默认安装位置

#z::		;;更改软件的安装目录
str := clipboard
Sleep, 50
send, ^a
Send, ^c
FullFileName := Clipboard
SplitPath, FullFileName, name
Programpath = D:Program
path = %Programpath%%name%Sleep, 50
Clipboard := path
Sleep, 50
send,^v
Sleep, 50
clipboard := strreturn  

 

获得窗口句柄

hwnd := WinExist("dm_soft.txt - 记事本") ;获取窗口句柄
Msgbox, %hwnd%

这里是通过标题名的形式来获得句柄,注意,这里的hwnd是16进制的,因此可能会一些其他软件显示出来

autohotkey如何调用python的程序

#T::	;
run, test.py
return

或者

#o::		;;
run, python test.py
Return 

电脑上同时装有python和anaconda,左边那个是run test.py的运行结果,调用的anaconda的环境,右边那个是run python test.py的运行的结果,调用的是python的环境。

autohotkey静默不显示界面地运行python程序

CapsLock & e::		;;
run, pythonw E:DocumentsDesktopProgramPython爬虫百度百度OCRtest.pyw
Return 

需要注意两点,1是python程序的后缀名应该改为pyw,2是应该用pythonw而非python解释器来运行程序。

autohotkey设置命令行打开路径

autohotkey运行命令行命令?

run , python

直接在run命令后面接入想要运行的命令行命令即可

autohotkey等待剪切板中有新的内容

clipboard =  ; 让剪贴板初始为空, 这样可以使用 ClipWait 检测文本什么时候被复制到剪贴板中.
ClipWait  ; 等待剪贴板中出现新的文本
msgbox,现在剪切板中出现了新的内容了!

鼠标点击

Click  ; 在鼠标光标的当前位置点击鼠标左键.
Click 100, 200  ; 在指定坐标处点击鼠标左键.
Click 100, 200, 0  ; 移动而不点击鼠标.
Click 100, 200 right  ; 点击鼠标右键.
Click 2  ; 执行双击.
Click down  ; 按下鼠标左键不放.
Click up right  ; 释放鼠标右键.

验证码识别

$!y::  ; x:=ComVar()
y:=ComVar()send,!a		;这个是调用snipaste进行截图
loop
{state := GetKeyState("LButton", "P")if  state   ; 如果此状态为 true, 那么说明此刻刚按下了鼠标左键{dm.GetCursorPos(x.ref,y.ref)x1 :=x[]y1 :=y[]break  ; 中断循环.}
}Loop  
{state := GetKeyState("LButton", "P")if not state   ; 如果此状态为 true, 那么用户实际已经松开了鼠标左键.{dm.GetCursorPos(x.ref,y.ref)send,e{Esc}		;这个是释放snipaste的截图x2 :=x[]y2 :=y[]break  ; 中断循环.}
}img := dm.Capture(x1,y1,x2,y2,"验证码.bmp")run, pythonw chaojiying.pyw			;调用python的验证码识别程序进行识别
clipboard =  ; 让剪贴板初始为空, 这样可以使用 ClipWait 检测文本什么时候被复制到剪贴板中.
ClipWait  ; 等待剪贴板中出现新的文本return

百度网盘的自动化登录

enter::
send,17167634850{tab}mianfeivip.comgy    ;;百度网盘的账号密码Hwnd:=dm.getmousepointwindow() ;获取鼠标所在的窗口句柄
state := dm.bindwindow(hwnd,"normal","normal","normal",0)  ;绑定窗口;找到验证码换一换处的位置
x:=ComVar()
y:=ComVar()
state := dm.FindPic(0,0,2000,2000,"换一换.bmp","000000",0.8,0,x.ref,y.ref);做一下位置偏移调整
x[] := x[]- 85
y[] := y[] - 0;~ dm.moveto(x[],y[])img := dm.Capture(x[],y[],x[]+80,y[]+30,"验证码.bmp")
;~ msgbox,截图状态为`:%img%;运行超级鹰验证码识别程序
run, pythonw chaojiying.pyw
send,{tab}clipboard =  ; 让剪贴板初始为空, 这样可以使用 ClipWait 检测文本什么时候被复制到剪贴板中.
ClipWait  ; 等待剪贴板中出现新的文本
send,^v;找到登录的图片
state := dm.FindPic(0,0,2000,2000,"登录.bmp","000000",0.8,0,x.ref,y.ref)
dm.moveto(x[],y[])
dm.LeftClick
Sleep, 100
dm.LeftClickdm.Unbindwindowreturn

这个的程序代码就比较长了。

打开设备管理器

#s::		;;打开设备管理器
run,C:WindowsSystem32devmgmt.msc
Return  

重要的不是路径,而是这个运行程序的名称

autohotkey使用try函数

try  ; 尝试执行的代码.
{run,C:WindowsSystem32devmgmt.msc1
}
catch e  ; 处理由上面区块产生的首个错误/异常.
{MsgBox, An exception was thrown!`nSpecifically: %e%Exit
}

autohotkey用鼠标截图


$!y::  ; x:=ComVar()
y:=ComVar()loop
{state := GetKeyState("LButton", "P")if  state   ; 如果此状态为 true, 那么说明此刻刚按下了鼠标左键{dm.GetCursorPos(x.ref,y.ref)x1 :=x[]y1 :=y[]break  ; 中断循环.}
}Loop  
{state := GetKeyState("LButton", "P")if not state   ; 如果此状态为 true, 那么用户实际已经松开了鼠标左键.{dm.GetCursorPos(x.ref,y.ref)x2 :=x[]y2 :=y[]break  ; 中断循环.}
}msgbox,, ,鼠标按下时的坐标为:%x1%, %y1%,0.5
msgbox,, ,鼠标松开时的坐标为:%x2%, %y2%,0.5img := dm.Capture(x1,y1,x2,y2,"测试截图.bmp")
msgbox,, ,截图过程结束,0.5return

得到当前鼠标按下位置的坐标

!7::
MouseGetPos, xpos, ypos
Msgbox, The cursor is at X%xpos% Y%ypos%.
return

注意这个活的的坐标是相对于某一个特定窗口的坐标

检测鼠标左键是否按下

state := GetKeyState("LButton", "P")
msgbox,% state

autohotkey鼠标连击

$!l::  ; 把 Alt+L 键设置为鼠标连击键 ($ 符号会有助于下面 GetKeyState 的 "P" 模式).
Loop  ; 由于没有指定数字, 所以这是个无限循环, 直到遇到内部的 "break" 或 "return".
{if not GetKeyState("l", "P")  ; 如果此状态为 true, 那么用户实际已经释放了 F1 键.break  ; 中断循环.; 否则 (由于上面没有 "中断"), 继续点击鼠标.Click  ; 在当前指针位置点击鼠标左键.
}
return

对复制的文字进行计数

#SingleInstance force			;;执行程序前先关闭程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 统计字符数. 小众计数器未提供源码,自己实现
;
; F12: 统计当前选中文字中的中英文单词数
;
; gaochao.morgen@gmail.com
; 2015/6/21
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#Persistent
#SingleInstance Force
#NoTrayIcon
#NoEnv; 英文标点符号
global Symbols := "^[:;,_!'-\.*?+[{|()^$]"
global ToolTipX := A_ScreenWidth / 2
global ToolTipY := A_ScreenHeight / 2F12::ClipSaved := ClipboardAll   ; 保存剪切板的内容; 把当前选中的文本拷贝到剪切板,然后统计剪切板的内容ClipBoard :=  Send ^c ClipWait, 5 ChCount := ChineseCount(ClipBoard)EnCount := EnglishCount(ClipBoard)ClipBoard := ClipSaved 		; 恢复剪切板的内容ToolTip, % ShowResult(ChCount, EnCount), %ToolTipX%, %ToolTipY%SetTimer, RemoveToolTip, 3000
ReturnRemoveToolTip:SetTimer, RemoveToolTip, OffToolTip
Return;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                       函数                            ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 统计中文字符
ChineseCount(Input)
{Count := 0; AHKL对一个UTF-8编码的汉字,会循环2次Loop, Parse, Input{if A_LoopField is alnum	; 仅当A_LoopField包含[0-9a-zA-Z]时为真{continue}else if A_LoopField is space{continue}else{pos := RegExMatch(A_LoopField, Symbols)if (ErrorLevel = 0 && pos > 0)continueelseCount := Count + 1}}Return Count
}; 统计英文字符
EnglishCount(Input)
{StringReplace, Input, Input, ', x, All	; It's -> Itxs,视为一个单词StringReplace, Input, Input, -, x, All	; well-defined -> wellxdefined,视为一个单词RegExReplace(Input, "w+", "", Count) 	; PhiLho Return Count
}; 显示统计结果
ShowResult(ChCount, EnCount)
{Result := "中文: "Result .= ChCountResult .= "`r`n"Result .= "英文: "Result .= EnCountResult .= "`r`n"Result .= "总共: "Result .= ChCount + EnCountReturn Result
}

在命令行下面粘贴文字

#IfWinActive ahk_class ConsoleWindowClass
!v::
send %Clipboard%
return
#IfWinActive

先申明一个快捷键,然后在下面实现它

Hotkey, #right, toggleWindowRight
;~ Hotkey, #left, toggleWindowLeft
;~ Hotkey, #up, toggleWindowUp
;~ Hotkey, #down, toggleWindowDowntoggleWindowRight:msgbox,1
return 

clipwait的延时用法

!r::      ;;
clipboard :=  
ClipWait, 3, 1
if  clipboard =  
{msgbox,没有等到你需要的内容!msgbox,剪切板里面的内容是 %clipboard%}
else 
{msgbox,终于等到了你需要的内容了!msgbox,剪切板里面的内容是 %clipboard%
}Return  

一个窗口如果存在就激活它,如果不存在就打开这个文件或者运行对应的程序

#w::		;;IfWinExist, 问题.txt - 记事本
{WinWait, 问题.txt - 记事本, IfWinNotActive, 问题.txt - 记事本, , WinActivate, 问题.txt - 记事本, WinWaitActive, 问题.txt - 记事本, Send, {CTRLDOWN}{END}{CTRLUP}{ENTER}}
else
{run,E:DocumentsDesktop问题.txtWinWait, 问题.txt - 记事本, IfWinNotActive, 问题.txt - 记事本, , WinActivate, 问题.txt - 记事本, WinWaitActive, 问题.txt - 记事本, Send, {CTRLDOWN}{END}{CTRLUP}{ENTER}
}Return  

连续按一个键多次?

send,{Left 3}

热字符串的触发方式有哪几种?

使用send发送

::yt::
send,Youtube
return

不用send,热字符串直接接到后面,但是这种触发方式会在末尾的时候加上一个空格:Youtube 。

::yt::Youtube

为了避免这种情况,在第一对冒号前面加上"oc?",c代表区分大小写,?表示缩写可以在

:oc?:yt::Youtube

热字符串必须打出字或者字母来才可以触发吗?

如何控制鼠标点击?

注意,这种点击方式是相对坐标,是以窗口的左上角为坐标原点开始的。

!k::		;;
click,1000,300
Return  

autohotkey如何找图片?

1.先把需要寻找的图片保存下来

如何更聪明地设置快捷键?

一般组合键是Ctrl,Alt,Shift和Win加一个英文字母,那么可以这样来记忆,Ctrl代表的是控制,shift是上网的意思,

设置触发快捷键的时候如何分左右?

在按键的前面加上小于<号就是左边的按键,加上大于>号就是右边的按键。

<^k::
send,按下的是左边的Ctrl键
return>^k::
send,按下的是右边的Ctrl键
return

如何得到当前运行的这个脚本所在的路径?

^j::		;;
msgbox,%A_ScriptFullPath%
Return  

如何用autohotkey控制网页元素?

注意,以下操作要使用谷歌Chrome浏览器才可以,360极速浏览器没有copy js path的选项。

1.Ctrl+shift+i,打开浏览器的审查功能

2.打开Console控制台

3.选中网页中的一个元素,点击审查,在打开的源码页面里面选择copy,copy js path,然后将复制的内容粘贴到console控制台里面,可以看到js 路径对应的网页元素已经是被标记上了。

4.可以对网页元素有以下几种操作(对知网首页进行的测试)

对按钮进行点击:

document.querySelector("#CJFQ > a").click()

对文本框中的内容进行改写:

document.querySelector("#txt_SearchText").value = "深度学习"

对下拉菜单进行选择

5.在用ALT+D键将焦点聚集在地址处,然后在地址栏处键入命令javascript:之后就可以开启JavaScript的命令输入了

#k::		;;
send,!d
Sleep, 100
send,{text}javascript:
Clipboard=
(document.querySelector("#CJFQ > a").click()
)
send,^v
send,{enter}
Return  

Anki配合天若OCR使用?

Esc::                                      ;;WinHide, 添加
send,!sWinWait, 耗时 
WinHide,耗时WinShow, 添加
WinWait, 添加IfWinNotActive, 添加, , WinActivate, 添加, 
WinWaitActive, 添加, Send, ^vReturn 

autohotkey获得所有窗口的标题?

WinGet, id, list,,, Program Manager
Loop, %id%
{this_id := id%A_Index%WinActivate, ahk_id %this_id%WinGetTitle, this_title, ahk_id %this_id%msgbox,% this_title
}

autohotkey关闭所有窗口?

WinGet, id, list,,, Program Manager
Loop, %id%
{this_id := id%A_Index%WinClose, ahk_id %this_id%
}

autohotkey如何释放所有按键?

+!s::		;;
KeyList := "Shift|Ctrl|Alt|CapsLock|space" ; and so onLoop, Parse, KeyList, |
{If GetKeystate(A_Loopfield, "P")Send % "{" A_Loopfield " Up}"
}Return 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平