安利你试试fastkey这款软件,可以调用autohotkey的脚本,也可以直接录制键盘鼠标操作,然后录制后的就autohotkey脚本,修修改改就可以实现自己的目的。
你问的太广了吧,具体想用ahk干嘛呢?
我只能甩你两个链接了:
ahk代码库(3600+)
稀有代码库(660+)
1 个赞
我分享几个自己用的.
类型一: 替换原本按键的功能
比如 多媒体键盘上, 浏览器和邮件 键, 本身没啥用. 我就改成了
;==================================================
;** 主页键启动文本编辑器
;==================================================
Browser_Home::
run "D:\workTools\EmEditor\EmEditor.exe"
;trayTip 运行,Emditor 已启动
return
;==================================================
;** 邮件键启动xx工具
;==================================================
Launch_Mail::
run "工具路径"
;trayTip 运行, 已启动
return
;==================================================
;** 快捷键 Win+e 打开第三方文件管理器
;==================================================
#e::
Run D:\Tools\Q-Dir\Q-Dir_x64.exe
;TrayTip 运行, 文件管理器已打开
Return
类型二: 简化一些操作,提高效率
;=======================================================
;** 快捷键 Alt+F2 给选中文件加前缀日期yyyyMMdd_
;=======================================================
!F2::
IfWinActive ahk_class dopus.lister
{
reName()
}
IfWinActive ahk_class CabinetWClass
{
reName()
}
return
reName()
{
clipboard = ; 清空剪贴板
Send, ^c
ClipWait, 2
if ErrorLevel
{
MsgBox, 获取文件名失败.
return 1
}
Clipboard=%clipboard%
filePath= %clipboard%
IfExist %filePath%
{
FullFileName = %filePath%
SplitPath, FullFileName, name, dir
ToDay=%A_Year%%A_MM%%A_DD%
newName=%dir%\%ToDay%_%name%
FileMove,%FullFilename%,%newName%
if ErrorLevel
{
MsgBox, 文件改名失败.
return 1
}
;TrayTip 文件名加日期,%name% 已改名为 %ToDay%_%name%,30,1
showText("文件名加日期")
}
return 0
}
类型三: 实现必须安装第三方软件才能有的特殊功能
;==================================================
;** 快捷键 Win+F10 获取无法复制的文字
;==================================================
#F10::
CoordMode,Mouse,Screen
MouseGetPos,x0,, win_id, ctrl_id
WinGetTitle, win_title, ahk_id %win_id%
ControlGetText, ctrl_text, %ctrl_id%, ahk_id %win_id%
ActiveWinTitle := MouseIsOverTitlebar()
If ActiveWinTitle!=0 ;鼠标下是标题栏
{
ToolTip, 复制标题栏内容: `n %win_title%
clipboard=%win_title%
}
else ;鼠标下是控件
{
ToolTip, 复制控件内容:`n %ctrl_text%
clipboard=%ctrl_text%
}
loop
{
MouseGetPos,x1 ;鼠标挪动取消提示框
if x1!=%x0%
{
tooltip
break
}
}
return
MouseIsOverTitlebar(HeightOfTitlebar = 30)
{
WinGetActiveStats,ActiveTitle,width,height,xPos,yPos
MouseGetPos,x,y
If ((x >= xPos) && (x = yPos) && (y <= yPos + HeightOfTitlebar))
Return,%ActiveTitle%
Else
Return,false
}
Return
;=====================================================
;** 快捷键 Win+F12关闭显示器
;=====================================================
#F12::
MsgBox ,64 , 警告, 2秒后屏幕将自动关闭, 2
SendMessage, 0x112, 0xF170, 2,, Program Manager
return
;==================================================
;** 快捷键 Win+` 使当前窗口置顶
;==================================================
#`::
WinSet, AlwaysOnTop, toggle,A
WinGetTitle, getTitle, A
Winget, getTop,ExStyle,A
if (getTop & 0x8)
TrayTip 已置顶, 窗口标题: `n%getTitle%,10,1
else
TrayTip 取消置顶, 窗口标题:`n %getTitle%,10,1
return
最近才听说这个工具,我倒是就是试试看如何使用,来提高生产力,感谢您的分享
我会尝试下,感谢您
用alt+q代替alt+f4.
;打开AHK帮助文档。
#w::
ahk_id := "AutoHotkey" "ahk_class HH Parent" ;多重条件:先是标题文本的关键词,然后是「AHK_条件」。
if(WinExist(ahk_id))
{
if (WinActive(ahk_id))
{
WinGet, OutputVar, MinMax, % ahk_id
if(OutputVar=-1)
{
WinMaximize, % ahk_id
}else
{
WinMinimize, % ahk_id
}
}else
{
WinActivate, % ahk_id
WinMaximize, % ahk_id
}
}else
{
run, "C:\Program Files\AutoHotkey\AutoHotkey.chm"
}
return
请教您类型二代码中reName前面的几行是什么作用?我试的时候整个不起作用,但我把前面几行注释掉的话就能正常工作了。
那是检测作者常用的2个资源管理软件是否正在激活状态
你自己用的时候可以改成你自己的,更简单点的是ahk_exe Everything.exe
不过想找到程序的class也不难,用ahk自带的那个Windows spy.ahk脚本就行
;改变ahk发送的热键level,高level的热键可以触发低level的热键,默认为0
;这里把cpas键设置为发送vkff,这是一个未使用的键码,没有任何效果
#Inputlevel, 1
CapsLock::VKFF
;level设置回0,这样caps发送的vkff就可以触发下面的按键
;这样做可以很好的屏蔽原按键的功能,防止键盘灯闪烁以及一些其他bug
#Inputlevel, 0
;设置caps切换的原功能
VKFF::SetCapsLockState % !GetKeyState("CapsLock", "T")
;然后就可以大写锁定作为修饰键了,用&连接
;需要什么键自己写,适合自己的才是最好用的
VKFF & a::send ,{Enter}
;因为&最多只能连接一个按键,所以要使用多修饰键要像下面这样写
#if GetKeyState("Alt")
VKFF & x::send ,!{Del}
#if GetKeyState("Ctrl")
VKFF & e::send ,^{PgUp}
#if GetKeyState("Shift")
VKFF & c::send ,+{Ins}
#if