任意编辑器中实现AHK的F1帮助功能。在编辑器中写autohotkey代码时,用快捷键调用在线帮助文档,查询选定文本的autohotkey文档说明。
用法:
在SciTE4AHK或其他编辑器中,选定要查询的文本,按CTRL+F12键(快捷键可在代码中自行修改)。
备注:本脚本是通过窗口标题来识别帮助网页
- 多标签浏览器中,按热键时确保帮助网页处于”切换到”的状态.建议将帮助网页拖出来为一个单标签浏览器窗口.
- 后续如果在线帮助网页的窗口标题特征字符修改了,请修改代码中的“WinExist(“| AutoHotkey”)”。
写这个脚本的原因:
- 新版的本地autohotkey帮助文档chm无法后退,很不方便。
- sublime text和vscode等编辑器(添加”GroupAdd,Editer_ahk,ahk_exe 编辑器进程名.exe”进行支持,或者干脆删除#if语句取消快捷键的窗口限制)对autohotkey的F1键调用帮助支持不够。
TrayTip,,ahk在线帮助文档.ahk已启动,3
oSciTE := ComObjActive("SciTE4AHK.Application") ;SciTE4AHK的对象接口
GroupAdd,Editer_ahk,ahk_exe sublime_text.exe ;可以添加自己的编辑器,比如vscode
GroupAdd,Editer_ahk,ahk_exe SciTE.exe
#if WinActive("ahk_group Editer_ahk") ;快捷键限制在编辑器中有效
^F12::
KeyWait,CTRL ;不等ctrl和f12按键释放,容易跟后面的send冲突
KeyWait,F12
hw := WinExist() ;存入上面winactive的窗口的句柄
WinGetTitle,hw_title,ahk_id %hw%
SetTitleMatchMode,2
if(hw := WinExist("| AutoHotkey")){ ;用标题的"| AutoHotkey"定位帮助网页窗口
if(InStr(hw_title,"SciTE4AutoHotkey"))
Word_help := oSciTE.Selection ;scite4ahk对象属性,直接获取SciTE当前选定文本
else{ ;SciTE之外的编辑器,只能用ctrl+c复制获取选定文本
Clipboard := ""
send,^c
ClipWait,2
Word_help := Clipboard
}
WinActivate,ahk_id %hw%
WinWaitActive,ahk_id %hw%
;ControlSend,ahk_parent,{Ctrl Up}{F12 Up}!N,ahk_id %hw%
ControlSend,ahk_parent,!N,ahk_id %hw% ;激活帮助文档的索引
Sleep,500
SendInput,{end}{BS 20} ;20个退格键,清除上次查询遗留的文本
send,% "{Text}" Word_help
send,{Enter}
}else{
MsgBox,3,未找到ahk帮助网页,是否要打开ahk帮助网页?
IfMsgBox,Yes
run,https://www.autoahk.com/help/autohotkey/zh-cn/docs/AutoHotkey.htm
;run,https://wyagd001.github.io/zh-cn/docs/AutoHotkey.htm ;分流镜像
}
SetTitleMatchMode,1
return
#If
建议补充效果图,很不错的想法,如果需要社区给予支持,社区定当全力支持!
感谢河大佬鼓励!我在使用SciTE4AHK过程中,自己弄了不少自用的小脚本,后续也会发上来。效果图是操作示范的动图么?很赞同,这对浏览者很有意义。
使用方法最好放在正文中,放在摘要中,显示效果不好。可以在每个部分写上标题,比如简介、演示、帮助、源码,下载链接等等!?
收到!就像markdown那样格式化编写。我晚上开电脑修改。
图直接插入文内,你放上面只能是缩略图的时候显示的。
?
小猪哥,一眼就认出你?
感谢!
不客气!如有疑问可在社区里留言。
谢谢分享
从在线文档里取索引链接,可以直接跳到对应页面,缺点是每次都打开一个新浏览器标签
粽子哥,不用每次都新开一个标签页,只要开一次。然后保持他在该浏览器窗口处于“被切换到”状态,以确保脚本能用标题识别到帮助窗口即可。跟我们用本地帮助文档一样。
谢谢db!?