windows - 从 AutoHotKey 脚本捕获 Windows 上空文本的复制/粘贴

标签 windows copy-paste autohotkey

默认情况下,在 Windows 上,当复制文本时,它会被放入剪贴板。但是当尝试复制 文本时,剪贴板未被触及。例如,在编辑器中不选择任何文本,然后按 ctrl+c,将不会导致剪贴板发生任何变化。

问题是,我需要用 AutoHotKey 捕捉这个事件。由于剪贴板未更改,我不知道如何干净地执行此操作(即没有超时)。

有人知道怎么做吗?

编辑:为了澄清,我从 AutoHotKey 中发送 ctrl+c。我这样做是为了判断是否选择了任何文本,即我正在发送 ctrl+c,然后检查是否有任何文本被复制到剪贴板。问题是,如果没有选择文本,AutoHotKey 的剪贴板处理程序永远不会被调用,迫使我使用超时,这不是好的做法。

最佳答案

这是我做的。由于剪贴板在 AutoHotkey 中是一个变量,您可以检查它是否为空。我先清空剪贴板,发送control+c,然后看看剪贴板是不是还是空的。如果需要,您可以先将当前剪贴板临时移动到一个临时位置。

ClipSaved := ClipboardAll
Clipboard =     ; empties the clipboard
Send ^+{Left}   ;  I just used highlight left to select text, you can replace this with
             ; whatever your program uses to select an input.
Send ^c         ; attempt to copy text
If Clipboard =  ;  checks to see if clipboard is empty
{
    break  ; Put what you want to do if the clipboard is empty, I used break to stop a loop
}
Clipboard := ClipSaved  ; puts the original clipboard contents back

我正在从一个打开的文档中搜索文本,用户可以在其中选择向前或向后的方向。倒退时,它会卡在文档开头的循环中。我设置了一个循环限制以防止它成为无限循环,但它仍然浪费时间等待循环完成。如果剪贴板为空,我使用 break 函数结束循环。

为了在应有的功劳下给予功劳,我从另一篇有其他有用提示的帖子中获得了灵感。它发布了您可以使用此脚本检查空白变量。 http://www.autohotkey.net/~deleyd/xprxmp/autohotkey_expression_examples.htm#J v := ""

If v =
    MsgBox v = ""

If (v = "")
    MsgBox v = ""

我从 AutoHotkey 文档网站找到了如何临时存储和替换剪贴板内容。 http://www.autohotkey.com/docs/misc/Clipboard.htm

ClipSaved := ClipboardAll   ; Save the entire clipboard to a variable of your choice.
    ;... here make temporary use of the clipboard, such as for pasting Unicode text via    Transform Unicode ...
Clipboard := ClipSaved   ; Restore the original clipboard. Note the use of Clipboard    (not ClipboardAll).
ClipSaved =   ; Free the memory in case the clipboard was very large.

希望这对您有所帮助。 塞缪尔

关于windows - 从 AutoHotKey 脚本捕获 Windows 上空文本的复制/粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3381451/

相关文章:

icons - 从 .ico 文件中选择自定义 AutoHotKey 托盘图标

autohotkey - 带 ALT 的特殊模式,如大写锁定

linux - 将 Emacs 复制/粘贴与系统复制/粘贴集成

ms-word - 从 Ms Word 复制并粘贴到 Rich Textbox 问题

css - 从可拖动的 angular-dnd-list div 复制文本

autohotkey - 重新映射键的热键不会触发热字符串

.net - 以编程方式监视文件上的 Windows #locks,如 compmgmt.msc 中所示

c++ - 在 C++ 中调用 free() 在调试中触发 ntdll!DbgBreakPoint() 但在发布时崩溃

windows - robocopy 导致成功退出(1)

java - 在 Windows XP 中使用 JNDI 获取用户的组名