v1.8 Windows技巧 :获取任意弹窗中的文本内容
v1.7 介绍 AutoHotKey,引三个脚本作为例子。
v1.6 补充一个Win32的列表搜索技巧。
列表搜索技巧
-
Win32 的列表(比如源管理器的文件列表、IDM的下载列表)一般直接支持用键盘搜索,无需额外的设计。
搜索方式是激活列表界面后,直接用键盘打字,不仅仅支持英文,还能用输入法输入中文进行搜索。搜索仅能从头匹配,而且需要在一小段时间内打完,这个时候就体现打字速度的优势了。
AutoHotKey
AutoHotKey 允许用户通过编写脚本响应或者改变IO输入指令,实现自定义快捷键。似乎还可以用来实现简单的程序(而不是常驻托盘监听IO),用脚本调用Win32的API,十分有趣。
-
用在 VSCode 上,鼠标中键可以用来打开符号定义(原本是F12键打开,极其不便)。
VSCode.vhk (来自Stack Overflow)
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; Enable warnings to assist with detecting common errors. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. #IfWinActive ahk_exe Code.exe ~MButton:: MouseGetPos, xpos, ypos if (ypos >= 87) { SendInput,{Click}{F12} } return
保存后双击运行,任务栏会出现托盘图标,代表运行成功。
-
我需要实现屏蔽F1键。并不需要用F1打开多数情况下没什么用的帮助文档,而且F2重命名的时候也容易误触,导致跳转到浏览器上面去了。F1就给我用来复制文件名称好了。
怎么屏蔽F1键呢?恰好,文档中就有标准答案(省去了一次全网搜索,哈哈),提供了用F1键代替Alt+Tab组合用来切换窗口的脚本片段:
文档的索引功能很方便!比如我先用已知知识MButton查找HotKeys大类,再页内查找`F1`一下子就找到了相关用例。*F1::Send {Alt down}{tab} ; Asterisk is required in this case. !F2::Send {Alt up} ; Release the Alt key, which activates the selected window. #IfWinExist ahk_group AltTabWindow ~*Esc::Send {Alt up} ; When the menu is cancelled, release the Alt key automatically. ;*Esc::Send {Esc}{Alt up} ; Without tilde (~), Escape would need to be sent. #If
文档的索引功能很方便!比如我先用已习得的知识MButton查找HotKeys这一大类,再页内查找`F1`一下子就找到了相关用例。
-
下面就是我编写的用F1 键进行复制的脚本。配以不同软件,效用各有不同。当在浏览器中使用时,F1键用来复制选中的文本。当处于系统文件管理器(Explorer.exe)中时,F1键用来复制文件的无后缀名称。
#SingleInstance force #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; Enable warnings to assist with detecting common errors. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. 执行复制() { ; ClipTemp := ClipboardAll ; Clipboard := Send, ^c ClipWait, 0.5 S := Clipboard IfWinActive, ahk_exe explorer.exe { SplitPath,S,,,,S ; MsgBox % "取得无后缀文件名 : " . S Clipboard := S } } F1:: 执行复制() return
编写的时候发现 AutoHotkey 竟然还支持中文的函数名称,不错,深得我心。中文函数名称多好,再也不用英文造句了,哈哈。
( 简书还支持 AutoHotKey 的语法高亮啊,帅。)
Windows技巧 : 获取任意弹窗中的文本内容。
查阅 AutoHotkey 的文档时,偶然看到一段关于 Windows 原生消息弹窗的文本:
Tip: Pressing Ctrl+C while a message box is active will copy its text to the clipboard. This applies to all message boxes, not just those produced by AutoHotkey
也就是说,Windows 原生的消息弹窗支持直接用 Ctrl+C 复制其中的文本,之前因为无法选中文本,一直以为是无法复制的……
尝试了一下,发现还自带格式,比如关闭txt时,若未保存则提示如下 :
[Window Title]
Notepad[Main Instruction]
Do you want to save changes to C:\Users\Admin\Desktop\文本.txt?[Save] [Don't Save] [Cancel]
上一篇
https://www.jianshu.com/p/892059bf3240
网友评论