/MyAHKScript

常用的ahk脚本

Primary LanguageAutoHotkey

1. 背景

对于键盘党来说,AutoHotkey 简直是必备神器,自从用上了就离不开了。当然再锋利的刀刃,也要看你会不会使,AutoHotkey的脚本语言/语法设计的是真的烂。可一旦一个顺手的脚本写成了,你就再也离不开它了。

2. 安装AutoHotkey

下载地址:AutoHotkey

3. 第一个脚本

  1. 使用顺手的编辑器编写第一个脚本,文件命名为temp.ahk
; 按下 Win+N 时,打开记事本
#n::Run Notepad

安装好AutoHotkey之后,双击文件temp.ahk,系统托盘便出现了AutoHotkey的小图标,这时脚本已经生效了,按下Win+N可以看到记事本启动。

4. 是时候提高一波生产力了

脚本命名为keys.ahk

  • 快捷运行/停止网易云音乐
DetectHiddenWindows,On

; Ctrl+Alt+W 快捷打开/停止网易云音乐
^!w::
Process,Exist,cloudmusic.exe
if (%ErrorLevel% == 0){ ; 如果未运行,则启动
	Run "C:\Program Files (x86)\Netease\CloudMusic\cloudmusic.exe"
	WinWait,ahk_class DesktopLyrics
	WinMove,,,,A_ScreenHeight-64 ; 将桌面歌词移动到合适的位置
} else { ; 已启动则停止
; 停止后,系统托盘中网易云的图标仍然还在,需要鼠标飘过才能消失
; 于是在系统托盘范围内寻找网易云图标的位置,并将鼠标移动过去,之后再移动回来
	Run, taskkill /PID %ErrorLevel% /F,,Hide
	Sleep, 500
	CoordMode,Pixel,Screen
	CoordMode,Mouse,Screen
	MouseGetPos, MX, MY
	WinGetPos, Task_X, Task_Y, Task_W, Task_H, ahk_class Shell_TrayWnd
	ImageSearch, X, Y, Task_X, Task_Y/3, A_ScreenWidth, A_ScreenHeight, cloud_music_icon.bmp
	MouseMove, X, Y
	MouseMove, MX, MY
	CoordMode,Pixel,Relative
	CoordMode,Mouse,Relative
}
return

想听歌时:Ctrl+Alt+W 不想听了:Ctrl+Alt+W

  • 在资源管理器中快捷打开Cmder 虽说在浏览文件时,可以通过右键菜单快捷得在当前目录打开Cmder,可用到右键,就要使用鼠标,手就要离开键盘,对于一个经常需要在终端下工作的程序员来说,这个不能忍,于是:
; Ctrl+Shift+T 在当前目录打开cmder
$^+t::
Process,Exist,explorer.exe
if (%ErrorLevel% != 0){
	if WinActive("ahk_class CabinetWClass"){
		path := getExplorerPath()	
		Run ,cmder "%path%"
		return
	} ; 如果在桌面
	if WinActive("ahk_class WorkerW"){
		Run ,cmder %A_Desktop%
		return
	}
}
; 获取当前路径的函数
getExplorerPath(){
	IfWinExist, ahk_class CabinetWClass
	{
		ControlGetText,address,ToolbarWindow323,ahk_class CabinetWClass
		StringLen, length, address
		StringRight, path, address, length-4
		return path
	}
	return
}

要在这个目录打命令?Ctrl+Shift+T,秒秒钟,一个 Cmder 准备就绪。

  • 在Sublime Text中快捷打开Cmder 顺手的编辑器为Sublime Text,在Sublime Text中编辑完代码之后,通常需要打开终端编译运行刚刚的代码,常用的操作当然要方便又快捷,于是:
; Ctrl+Shift+T 在当前编辑文件的目录打开cmder
$^+t::
Process,Exist,sublime_text.exe
if (%ErrorLevel% != 0){
	if WinActive("ahk_class PX_WINDOW_CLASS"){
		WinGetTitle, title, ahk_class PX_WINDOW_CLASS
		StringGetPos,pos,title,\,r
		StringLeft, folder, title, %pos%
		Run ,cmder "%folder%"
		return
	}
}
  • 统一常用快捷键 各种工具/IDE快捷键不尽相同,于是将几个最常用的快捷键统一如下:
; Ctrl + BackSpace 删除单词
#IF WinActive("ahk_class Notepad")
Ctrl & BackSpace::Send ^+{left}{BackSpace}
#IF

; Shift + Enter 另起新行
Shift & Enter::Send {End}{Enter}

; Ctrl + D 删除一行
; 对Sublime Text特殊处理(PX_WINDOW_CLASS)
; 只支持常用的几个IDE/编辑器
; 在不支持的窗口上,原样发送 Ctrl + D 快捷键
$^d::
if (WinActive("ahk_class PX_WINDOW_CLASS")){
	send ^l{delete}
	return
}
if (WinActive("ahk_class Notepad")
 or WinActive("ahk_class ApplicationFrameWindow") 
 or WinActive("ahk_class Qt5QWindowIcon")){
	send {home 2}{Shift down}{end}{right}{Shift up}{delete}
}else{
	send, ^d
}
return

; Alt+C关闭当前窗口
; 如果当前窗口是Chrome,则将快捷键映射为Ctrl + W,作用为关闭当前标签页,而不是关闭整个窗口
$!c::
if(WinActive("ahk_class Chrome_WidgetWin_1")){
	send {Ctrl down}w{Ctrl up}
}else{
	WinClose,A
}
return

5. 设置开机运行

  1. 右键该脚本,创建快捷方式
  2. 将快捷方式移动到windows启动目录 *注:*Win+R打开运行,输入shell:startup即打开启动目录

6. 更多用法有待挖掘

7. Github地址备用

MyAHKScript