求一下autohotkey的一些热键

有没有用过autohotkey的大佬,求一些好用的热键.

安利你试试fastkey这款软件,可以调用autohotkey的脚本,也可以直接录制键盘鼠标操作,然后录制后的就autohotkey脚本,修修改改就可以实现自己的目的。

你问的太广了吧,具体想用ahk干嘛呢?

我只能甩你两个链接了:
ahk代码库(3600+)

稀有代码库(660+)

1 Like

我分享几个自己用的.

类型一: 替换原本按键的功能

比如 多媒体键盘上, 浏览器和邮件 键, 本身没啥用. 我就改成了

;==================================================
;** 主页键启动文本编辑器
;==================================================
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