2019-03-09-致AHKer

致AHKer

全世界ahker联合起来,夺回属于ahk在程序世界的一切!

说笑归说笑,在coders里没有几个人不认识autohotkey的,入门倒也很简单

中文说明地址:https://wyagd001.github.io/zh-cn/docs/AutoHotkey.htm
路线:热键!^+#的表示,组合热键,按键列表,程序窗口。。
举例:#a表示win+a组合,!b表示alt+b组合,^c表示ctrl+c,+d表示shift+d,还可以派生^+e,#^f,^!g,^+!h等组合

看得差不多就可以开始了
我们直接说哪些可以帮助提高效率的思路,当然这里只是浅水区,终极用法可以到github或者qq群和各路大佬谈笑风生。

第一种当然是run 程序/路径/网址 ,这类基本占了90%
第二种是按键映射,对于右撇子来讲,左手可以操作删除(backspace),还有回车换行(\r\n),可以使用反单引号和capslock映射到backspace和enter,另外可以增加一对热键控制其生效或失效。右手呢,控制复制粘贴(鼠标左侧的两个按键)

1
2
3
4
5
6
7
8
9
XButton1::^c

XButton2::^v

`::backspace

capslock UP::send,{enter} ;这里UP表示按下弹起后生效

!1::Suspend ;控制生效失效

第三种是字符串操作,在对于像经常使用BaiduPCS-go的朋友很有用配合Clipboard使用,比如

1
2
3
4
!l:: 	
Length := StrLen(Clipboard)
MsgBox,字符串长度为%Length%
return
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

/*
第一个对于像windows路径为反斜杠和部分编程需要正斜杠路径的矛盾,可以实现按下alt+/后替换剪切板的内容
*/
!/::
Clipboard := StrReplace(Clipboard, "\","/")
return

!space::
Clipboard := StrReplace(Clipboard, " ","\ ")
return


^!/::
Clipboard := StrReplace(Clipboard, "/","\")
return

!'::
clipboard="%clipboard%"
return

第四种配合程序窗体使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#w::    ;获取窗体的类
WinGetClass, class, A
Clipboard=%class%
MsgBox %class%
return

f1::
IfWinActive, ahk_class CabinetWClass ;
/*CabinetWClass 表示资源管理器,这里在集成了QTTabBar的资源管理器里f1、f2可以用作previousTab和nextTab使用,同理f6/f7/f8分别表示剪切粘贴删除*/
send,^+{tab}
return

f2::
IfWinActive, ahk_class CabinetWClass ;Cmder ;ahk_class VirtualConsoleClass ;
send,^{tab}
return

f6::
IfWinActive, ahk_class CabinetWClass
send,^x
return

f7::
IfWinActive, ahk_class CabinetWClass
send,^v
return

f8::
IfWinActive, ahk_class CabinetWClass
send,^d
return

说明,对于fn键ahk并不能直接控制;


下面内容看心情添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
!^p:: ;拷贝剪切板到D:\tmp.txt,然后复制到USB手机/sdcard/A/tmp.txt
{
/*FileSelectFile, positionFileName, S16,, Create a new file:
if (positionFileName = "")
return
*/
positionFileName = D:\tmp.txt
content = %Clipboard%
outFile := FileOpen(positionFileName , "w" , "utf-8")
if !IsObject(outFile)
{
MsgBox , 不能打开文件: %positionFileName%
return
}
outFile.write(content)
outFile.Close()


Run, %ComSpec% /c adb push D:\tmp.txt /sdcard/A/
;命令行解释器cmd.exe 用那个宏来表示?
;%ComSpec% /k在执行完命令后保留命令提示窗口,而/c则在执行完命令之后关闭提示窗口
return
}