onenote软件一直是用户会选择使用的一款办公软件,给用户带来了许多的帮助,让用户的笔记内容更加的清晰直观,再加上软件中的功能是很强大的,用户在使用的过程中使用自己需要......
2023-01-12
介绍了AHK的入门操作。实际应用时,通常会在同一个脚本中,对不同软件建立不同的快捷键体系,本文将介绍一个非常实用的函数来实现上述功能。
让热键仅在指定软件中有效
之前的示例脚本中,将F1定义为了onenote一级标题样式快捷键,但F1键如此方便好用,我也想在Excel中用它进行重映射,怎么办呢?
虽然你可以选择为每个软件单独写一个脚本,但这样做,管理和运行起来均不方便。实际应用中,一个.ahk脚本可能包含了成百上千行代码,这些代码集成了你打开电脑会经常使用的几乎所有热键功能。例如onenote、Excel等软件中的常用热键,通常是写在一个脚本中,如何让各软件中的快捷键彼此互不影响,并且只在各自的软件窗口才生效呢?
必须先推荐一下这个函数:#IfWinActive,定义在该函数内的热键,会根据软件窗口是否为当前活动窗口,而执行不同的动作。
例如,将之前的那段代码用#IfWinActive包起来,那么此处的F1键对应的动作,只有在当前窗口为onenote时才有效,在其他软件中不会生效。
#IfWinActive,ahk_classFramework::CFrame;Framework::CFrame即onenote的类名
F1::
Send,^!1
return
#IfWinActive
同样地,你可以在同一脚本中,用F1来定义Excel中的显示/隐藏当前单元格的批注。两个F1互不影响,只在各自的软件窗口中有效。
#IfWinActive,ahk_classXLMAIN;XLMAIN即Excel的类名
F1::;显示/隐藏当前单元格的批注
Send,!rh
return
#IfWinActive
所以,通过#IfWinActive,你可以将多个软件的热键定义在一个脚本中,彼此互不影响。
如何查看软件的类名
分析一下上面的代码,#IfWinActive是成对出现的,类似于VBA等很多编程语言中的if...endif,可以明确划分出作用域。
第一个#IfWinActive后面跟着参数,代表开始;第一个#IfWinActive后面不带参数,代表结束。就这样成对使用即可。
观察上面的onenote和Excel中的例子,第一个#IfWinActive后面跟着参数Framework::CFrame、XLMAIN分别代表onenote类名、Excel类名,通过这个类名才得以找到指定软件窗口。那么,这个类名从哪儿查看呢?
其实,安装AHK后,程序已经提供了一个非常方便的参考工具“WindowSpy”。运行脚本后,可以从托盘AHK图标处右键打开“WindowSpy”窗口。
打开窗口后,鼠标点击对应的软件窗口,就会获得该窗口的各种属性信息,例如onenote,第一个窗格内显示的就是onenote的类名、程序名等信息。当鼠标在onenote上移动时,鼠标坐标也会实时变化。
通过“WindowSpy”窗口,就可以轻松得到各软件的相关属性信息了,从而可以有针对性的对不同软件设置不同动作。
了解以上知识点后,基本可以参考帮助文档自行编写一些实用脚本了。
相关文章
onenote软件一直是用户会选择使用的一款办公软件,给用户带来了许多的帮助,让用户的笔记内容更加的清晰直观,再加上软件中的功能是很强大的,用户在使用的过程中使用自己需要......
2023-01-12
用户使用onenote软件时可以找到自己需要的功能来协助自己,让自己简单轻松的将笔记内容整理出来,给自己带来了许多的帮助,因此用户开始喜欢使用这款办公软件,当用户在编辑笔......
2023-01-12
在onenote软件中用户可以编辑重要的笔记信息,当用户在编辑学科课程的笔记时,基本上会使用到软件的公式功能来解决输入的符号的难题,为用户节省了许多的记录时间,因此这款办......
2023-01-12
用户使用onenote软件时,一般会用来编辑学科课程笔记以及参与研究项目的重要数据信息等,这是因为这款办公软件可以让用户进行科学化的整理笔记信息,让自己的整个笔记内容可......
2023-01-12
在使用onenote软件时,用户可以真真切切的感受到软件中的功能是很丰富实用的,可以帮助自己解决遇到的编辑问题,因此onenote软件给用户带来了许多的帮助,当用户在编辑笔记时,......
2023-01-12