电脑上有些常用软件,设置为用键盘打开可以提高效率,以下就是用ahk(autohotkey)来设置快捷键来操作常用软件。 实现功能:当软件运行了则将软件调到前端,如果没运行则运行该软件
# 代表win键,^ 代表Ctrl, + 代表Shift ,! 代表 Alt, 可以使用自己习惯的修饰键来进行修改,也可以使用组合键,^+v 表示使用 Ctrl+Shift+v 如果运行的程序在系统路径中, 则可以不用输入全路径, 只输入程序名就ok 激活指定的窗口. WinActivate , WinTitle, WinText, ExcludeTitle, ExcludeText 参数WinTitle窗口标题或识别目标窗口的其他条件. 请参阅 WinTitle. WinText如果使用此参数, 那么它必须是目标窗口中单个文本元素的子字符串(和内置的 Window Spy 工具显示的一样). 当 DetectHiddenText 的设置为 ON 时, 那么会检测到隐藏文本元素. ExcludeTitle标题中含有此参数值的窗口将被排除. ExcludeText文本中含有此参数值的窗口将被排除. 当一个非活动窗口变为活动状态时, 操作系统也会使其处于最前面(将其带到堆栈的顶部). 如果窗口已经处于活动状态, 则不会发生这种情况. 如果窗口最小化且处于非活动状态, 那么在激活之前自动还原. 在 [v1.1.20+]: 如果 WinTitle 是字母 "A", 并且省略了其他参数, 则活动窗口(最小化的) 将会还原. [v1.1.28.02+]: 已经是活动状态的窗口(最小化的), 也会被还原. 在 60 ms 的时间中, 会对目标窗口进行六次激活的尝试. 如果六次尝试都失败了, WinActivate 会自动发送 一般情况下, 如果有多个窗口匹配, 则最高匹配窗口(通常是最近使用的窗口) 将被激活. 如果该窗口已处于活动状态, 则它将保持活动状态, 而不是激活其下的任何其他匹配窗口. 但是, 如果使用 WinSet Bottom 将活动窗口移动到堆栈底部, 则可能会激活其他窗口, 即使活动窗口是匹配的. WinActivateBottom 激活最底层的匹配窗口(通常是最近最少使用的那个). GroupActivate 激活与窗口组指定的条件匹配中的一个窗口. [v1.1.20+]: 如果要激活的窗口处于隐藏状态并且 DetectHiddenWindows 被设置为 OFF 时, 该窗口将永远不会视为一个匹配项. 相反, 只要有一个匹配窗口是可见的, 它就会被激活. 在激活一个窗口后立即激活其他的窗口, 在一些系统上任务栏按钮可能会闪烁(取决于操作系统和设置). 要避免此问题, 请使用 #WinActivateForce. 窗口标题和文本是区分大小写的. 只有在打开 DetectHiddenWindows 设置时, 才能检测到隐藏窗口. 已知问题: 如果脚本运行在正在被远程桌面访问的计算机或服务器上, 当远程桌面客户端最小化时, WinActivate 可能会挂起. 一种解决办法是使用不需要激活窗口的命令, 如 ControlSend 和 ControlClick. 另一个可能的解决方法是在本地/客户端计算机的注册表上做如下设置: ; 将 HKCU 改成 HKLM, 并对该系统上的所有用户生效. RegWrite REG_DWORD, HKCU, Software\Microsoft\Terminal Server Client , RemoteDesktop_SuppressWhenMinimized, 2 WinActivateBottom, #WinActivateForce, SetTitleMatchMode, DetectHiddenWindows, 上次找到的窗口, WinExist(), WinActive(), WinWaitActive, WinWait, WinWaitClose, WinClose, GroupActivate, WinSet 示例如果记事本确实存在, 激活它, 否则激活计算器. if WinExist("Untitled - Notepad") WinActivate ; 使用 WinExist 找到的窗口 else WinActivate, Calculator 激活窗口激活指定的窗口. 激活窗口 WinTitle, WinText, ExcludeTitle, ExcludeText 参数WinTitle类型: 字符串, 整数或对象 识别目标窗口的窗口标题或其他条件. 请参阅 WinTitle. WinText类型: 字符串 如果存在, 此参数必须是目标窗口的单个文本元素的子字符串(和内置的 Window Spy 工具显示的一样). 如果 检测隐藏文本 为 ON, 那么会检测隐藏文本元素. ExcludeTitle类型: 字符串 标题中含有此参数值的窗口将被排除. ExcludeText类型: 字符串 文本中含有此参数值的窗口将被排除. 当非活动窗口变为活动状态时, 操作系统也会使其处于最前面(将其带到堆栈的顶部). 如果窗口已经处于活动状态, 则不会发生这种情况. 如果窗口处于最小化和非活动状态, 那么会对其还原后再进行激活. 如果 WinTitle 是字母 "A", 并且省略了其他参数, 则活动窗口将会还原. 窗口即使已经是活动窗口, 也会被还原. 在 60ms 的时间中, 会对目标窗口进行六次激活的尝试. 如果六次尝试都失败了, 激活窗口 会自动发送 激活窗口 第一次尝试失败后, 会自动发送 通常, 如果有多个窗口匹配, 则会激活最上面的匹配窗口(通常是最近使用的窗口). 如果窗口已经激活, 则它将保持激活状态, 而不是激活它下面的任何其他匹配窗口. 但是, 如果使用 置底窗口, 将活动窗口移动到堆栈底部, 则可能会激活其他窗口, 即使活动窗口是匹配的. 激活底层窗口 激活最底层的匹配窗口(通常是最近最早使用的那个). 激活窗口组 激活与窗口组指定的条件匹配的下一个窗口. 如果要激活的窗口处于隐藏状态并且 检测隐藏窗口 被设置为 OFF 时, 该窗口将永远不会视为一个匹配项. 相反, 只要有一个匹配窗口是可见的, 它就会被激活. 在激活另一个窗口后立即激活一个窗口时, 任务栏按钮可能在某些系统上可能会闪烁(取决于操作系统和设置). 为防止这种情况, 请使用 #强制激活窗口. 窗口标题和文本是区分大小写的. 除非 检测隐藏窗口 被打开, 否则不会检测隐藏窗口. 已知问题: 如果脚本运行在正在被远程桌面访问的计算机或服务器上, 当远程桌面客户端最小化时, 激活窗口 可能会挂起. 一种解决办法是使用不需要激活窗口的内置函数, 如 发送操作到控件 和 点击控件. 另一个可能的解决方法是在本地/客户端计算机的注册表上做如下设置: ; 将 HKCU 改成 HKLM, 以对该系统上的所有用户生效. 写注册表 "REG_DWORD", "HKCU\Software\Microsoft\Terminal Server Client" , "RemoteDesktop_SuppressWhenMinimized", 2 激活底层窗口, #强制激活窗口, 设置标题匹配模式, 检测隐藏窗口, Last Found Window, 窗口存在, 窗口已激活, 等待窗口激活, 等待窗口, 等待窗口关闭, 关闭窗口, 激活窗口组, Win 函数 示例#1 如果 窗口存在("无标题 - 记事本") 激活窗口 ; 使用前面找到的窗口 否则 激活窗口 "Calculator" #强制激活窗口跳过温和的方法而直接使用强制的方法激活窗口. #强制激活窗口 在脚本中的任何地方指定此项都将导致激活窗口的内置函数 -- 如 激活窗口, 激活底层窗口 和 激活窗口组 -- 跳过激活窗口的 "温和" 的方法而直接使用更强制的方法激活窗口. 虽然这个指令通常不会改变窗口被激活的速度和可靠性, 但是它可能会阻止任务栏按钮在不同窗口相继被快速激活时的闪烁. 相关激活窗口, 激活底层窗口, 激活窗口组 示例#1 #强制激活窗口 我自己写了一段代码,确实可以实现这个功能。 但是想要给多个窗口绑定一个快捷键却失败了。 我想要用 “ALT+1” ,“ALT+2” ,“ALT+3” ,“ALT+4” ,分别绑定不同的窗口。 请问代码应该怎么写? 谢谢。 (上次在知乎提问,很顺利的得到了解决方案, 希望这次也有人可以帮助我。) ;以下是我自己写的代码,我尝试这个段代码复制4遍, 只修改其中的快捷键。 但是运行失败了。 不知道原因在哪里,谢谢指教。 ;Open this windows with hotkey ALT + 1 } |