美文网首页
用最好的工具加强 Windows 第二篇【更新#1.8】

用最好的工具加强 Windows 第二篇【更新#1.8】

作者: 天下第九九八十一 | 来源:发表于2021-07-06 13:46 被阅读0次

    v1.8 Windows技巧 :获取任意弹窗中的文本内容

    v1.7 介绍 AutoHotKey,引三个脚本作为例子。

    v1.6 补充一个Win32的列表搜索技巧。


    列表搜索技巧

    • Win32 的列表(比如源管理器的文件列表、IDM的下载列表)一般直接支持用键盘搜索,无需额外的设计。

      搜索方式是激活列表界面后,直接用键盘打字,不仅仅支持英文,还能用输入法输入中文进行搜索。搜索仅能从头匹配,而且需要在一小段时间内打完,这个时候就体现打字速度的优势了。


    AutoHotKey

    AutoHotKey 允许用户通过编写脚本响应或者改变IO输入指令,实现自定义快捷键。似乎还可以用来实现简单的程序(而不是常驻托盘监听IO),用脚本调用Win32的API,十分有趣。

    1. 用在 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
      

      保存后双击运行,任务栏会出现托盘图标,代表运行成功。

    2. 我需要实现屏蔽F1键。并不需要用F1打开多数情况下没什么用的帮助文档,而且F2重命名的时候也容易误触,导致跳转到浏览器上面去了。F1就给我用来复制文件名称好了。

      怎么屏蔽F1键呢?恰好,文档中就有标准答案(省去了一次全网搜索,哈哈),提供了用F1键代替Alt+Tab组合用来切换窗口的脚本片段:

      *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`一下子就找到了相关用例。

      文档的索引功能很方便!比如我先用已习得的知识MButton查找HotKeys这一大类,再页内查找`F1`一下子就找到了相关用例。

    3. 下面就是我编写的用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

    未完待续,欢迎补充……

    相关文章

      网友评论

          本文标题:用最好的工具加强 Windows 第二篇【更新#1.8】

          本文链接:https://www.haomeiwen.com/subject/gprgultx.html