強大。簡單易學。
Windows的終極自動化腳本語言。
下載下傳安裝
AutoHotkey —— 官網
AutoHotkey中文指南
建立項目
- 右鍵點桌面空白處.
- 點選 "建立" 菜單.
- 點選裡面的 "AutoHotkey Script" 建立一個腳本.
- 給腳本命名. 備注: 檔案名必須帶 .ahk 字尾, 例如 MyScript.ahk
- 找到剛剛建立的腳本并右鍵點選它.
- 點選 "Edit Script".
- 一個新視窗被彈出, 也許是記事本. 如果是這樣就成功了!
- 建立一個文本檔案,修改檔案字尾名為 .ahk 格式也行
快捷鍵定義
;#代表win,
+代表shift,^代表Ctrl,
!代表Alt ;
如果要注釋,可以用分号 也可以用//
1. 熱鍵标記
!
:是熱鍵标記,這裡的感歎号代表鍵盤上的 alt 鍵。
!n
:即對應鍵盤熱鍵 alt + n。
常用熱鍵标記對應關系:
-
:win 鍵#
-
:alt!
-
:ctrl^
-
:shift+
-
:用于連接配接兩個按鍵(含滑鼠按鍵) 合并成一個自定義熱鍵.&
2. 連接配接
符号
::
意味着每次按下前面的熱鍵時,随後的指令将會被執行。這裡用來連接配接熱鍵标記和 Run 指令。
3. Run 指令
Run 指令:用來啟動一個程式、文檔、URL 網址或者快捷方式。如:
Run Notepad
Run C:\My Documents\Address List.doc
Run www.yahoo.com
Run mailto:[email protected]
把上面 3 部分組合起來即可實作自定義快捷鍵。
Ctrl | ^ | ^ |
Shift | + | + |
Alt | ! | ! |
Windows鍵 | # | # |
#、^、+、!等 | 一般不用 | {#}、{^}、{+}、{!}等 |
左Ctrl、左Shift、左Alt | <^ <+ <! | |
右Ctrl、右Shift、右Alt | >^ >+ >! | |
Enter | {enter} | |
Tab | {Tab} | |
F1、F12等 | F1、F12等 | {F1}、{F12}等 |
Esc | {Esc}或{Escape} | |
空格 | {Space} | |
Backspace | {Backspace}或{BS} | |
Delete | {Delete} or {Del} | |
Insert | {Insert} or {Ins} | |
↑、↓、←、→ | {Up}、{Down}、{Left}、{Right} | |
Home鍵 | {Home} | |
End鍵 | {End} | |
PageUp鍵 | {PgUp} | |
PageDown鍵 | {PgDn} | |
CapsLock鍵 | {CapsLock} |
常用操作
替換字元
我們來一個簡單的例子:輸入 chinar 自動替換為 `http://www.chinar.xin`
在打開的記事本中輸入:
第一種寫法:
::oyk::http://oykperson.xyz/
第二種寫法:
::oyk::
Send http://oykperson.xyz/
return
::bky::
Send https://www.cnblogs.com/
return
AHK文法中: Send 是發送指令, return 是結束
儲存後,右鍵檔案 →→ Run Script 運作腳本
然後,當我們輸入文本
chinar
按下 空格鍵 / Enter鍵 / tab 鍵時,會自動幫我們替換為
http://www.chinar.xin
極速打開網頁
Win+0
#0::Run https://tinypng.com/
自定義快捷鍵-打開檔案或網址
Alt+n 或+c啟動程式
!n::run notepad
!c::run, D:\SoftwareKit\_jade_new_soft\cmd_markdown_win64\Cmd Markdown.exe
一鍵拷貝檔案路徑
隻需要Ctrl+shift+c即可拷貝檔案路徑
^+c::
; null=
send ^c
sleep,200
clipboard=%clipboard% ;%null%
tooltip,%clipboard%
sleep,500
tooltip,
return
縮寫快速打出常用語
鍵入
/jeff
後,再加空格、或 tab、或回車
::/mail::[email protected]
::/jeff::http://www.jeffjade.com/
::/con::console.log();
::/js::javascript:;
::/fk::軒先生這會子肯定在忙,請騷後。thx。祝君:天天開心,日日欣悅。
激活/打開/隐藏程式
快捷鍵:Win+C
#c::
IfWinNotExist ahk_class Chrome_WidgetWin_1
{
Run "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
WinActivate
}
Else IfWinNotActive ahk_class Chrome_WidgetWin_1
{
WinActivate
}
Else
{
WinMinimize
}
Return
音量随心所欲
;最鐘愛代碼之音量随心所欲
;=========================================================
~lbutton & enter:: ;滑鼠放在工作列,滾動滾輪實作音量的加減
exitapp
~WheelUp::
if (existclass("ahk_class Shell_TrayWnd")=1)
Send,{Volume_Up}
Return
~WheelDown::
if (existclass("ahk_class Shell_TrayWnd")=1)
Send,{Volume_Down}
Return
~MButton::
if (existclass("ahk_class Shell_TrayWnd")=1)
Send,{Volume_Mute}
Return
Existclass(class)
{
MouseGetPos,,,win
WinGet,winid,id,%class%
if win = %winid%
Return,1
Else
Return,0
}
;=========================================================
視窗操作
;=========================================================================
#enter:: ;最大化視窗
WinGet,S,MinMax,A
if S=0
WinMaximize,A
else if S=1
WinRestore,A
else if S=-1
WinRestore,A
return
!enter:: ;最愛代碼之視窗置頂
WinGet ow, id, A
WinTopToggle(ow)
return
WinTopToggle(w) {
WinGetTitle, oTitle, ahk_id %w%
Winset, AlwaysOnTop, Toggle, ahk_id %w%
WinGet, ExStyle, ExStyle, ahk_id %w%
if (ExStyle & 0x8) ; 0x8 為 WS_EX_TOPMOST.在WinGet的幫助中
oTop = 置頂
else
oTop = 取消置頂
tooltip %oTitle% %oTop%
SetTimer, RemoveToolTip, 5000
return
RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return
}
!x:: ;關閉視窗
send ^w
return
#c:: ;cosea版以管理者身份打開cmd指令行
Run *RunAs cmd ,,max
return
#m:: ;視窗最小化
WinMinimize, A
return
^delete::FileRecycleEmpty ;ctrl+del,清空資源回收筒
F7::
Shutdown, 1 ;關機
;Shutdown, 2 ;重新開機
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
F8:: ;清除Windows中檔案名不能包含下列任何字元: \ / : * ? " < > |
Loop
{
StringReplace, clipboard, clipboard, ? , , UseErrorLevel ;清除英文問号
StringReplace, clipboard, clipboard, * , , UseErrorLevel ;清除*
StringReplace, clipboard, clipboard, : , , UseErrorLevel ;清除英文冒号
StringReplace, clipboard, clipboard, " , , UseErrorLevel ;清除"
StringReplace, clipboard, clipboard, < , , UseErrorLevel ;清除英文<
StringReplace, clipboard, clipboard, > , , UseErrorLevel ;清除英文>
StringReplace, clipboard, clipboard, / , , UseErrorLevel ;清除右斜杠
StringReplace, clipboard, clipboard, \ , , UseErrorLevel ;清除左斜杠
StringReplace, clipboard, clipboard, |, , UseErrorLevel ;清除|
if ErrorLevel = 0 ; 不需要再進行替換.
break
}
return
;神級代碼之鎖定中英文=============================================
;功能:輸入法狀态提示 ;f3強制中文 f4強制英文小寫
;環境:win10+搜狗輸入法,輸入法狀态切換用預設的shift鍵。
;作者:kazhafeizhale 知乎@oahgnat11
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#SingleInstance force
XButton1::^c
XButton2::^v
F3::
SetCapsLockState,off
switchime(0)
switchime()
return
F4::
SetCapsLockState,off
switchime(0)
return
switchime(ime := "A")
{
if (ime = 1){
DllCall("SendMessage", UInt, WinActive("A"), UInt, 80, UInt, 1, UInt, DllCall("LoadKeyboardLayout", Str,"00000804", UInt, 1))
}else if (ime = 0)
{
DllCall("SendMessage", UInt, WinActive("A"), UInt, 80, UInt, 1, UInt, DllCall("LoadKeyboardLayout", Str,, UInt, 1))
}else if (ime = "A")
{
;ime_status:=DllCall("GetKeyboardLayout","int",0,UInt)
Send, #{Space}
}
}
得到目前選中檔案的路徑
;=========================================================
#+c:: ;用快捷鍵得到目前選中檔案的路徑
send ^c
sleep,200
clipboard=%clipboard% ;windows 複制的時候,剪貼闆儲存的是“路徑”。隻是路徑不是字元串,隻要轉換成字元串就可以粘貼出來了
tooltip,%clipboard% ;提示文本
sleep,500
tooltip,
return
;=========================================================
開機自啟
提示:避免和系統快捷鍵沖突
/*溫馨提示*/
;Windows系統預設的Win快捷鍵:
;Win + E:打開資料總管;
;Win + D:顯示桌面;
;Win + F:打開查找對話框;
;Win + R:打開運作對話框;
;Win + L:鎖定電腦;
;Win + PauseBreak:打開系統屬性對話框;
;Win + Q: 本地檔案 / 網頁等搜尋;
;Win + U: 打開控制台-輕松使用設定中心;