1

我写了这个简单的 AHK 脚本,它正在工作。但是右键单击系统托盘图标-暂停/暂停,它仍然可以继续工作。是因为我的代码中的某些东西吗?还是关于win7 x64?

#Persistent
return

OnClipboardChange:
WinGetActiveTitle, OutputVar 
IfWinExist, collect.doc 
{
    WinActivate       ; use the window found above
    send,^v
    send,{Enter}
    winactivate,%Outputvar%
}
else
    tooltip,need collect doc,400,400
Sleep 100
return
4

1 回答 1

1

Pause和Suspend都不意味着阻止自动调用的子例程,如or 。只是阻塞当前线程,这意味着每个新创建的线程仍将运行,并且剪贴板更改确实会创建一个新线程。因此,无法阻止它。 在这种情况下,您需要在“事件子例程”中实现自己的一段逻辑来检查某种状态。 根据您的前提,使功能取决于暂停状态,一种相当简单的方法是检查内置的:OnClipboardChangeGuiClosePausePause

A_IsPaused

OnClipboardChange:
    if(A_IsPaused) {
        return
    }
    msgbox, 'sup?
return

当然有很多方法可以实现这一点。您还可以定义自己的热键来激活/停用/切换自定义状态。

PS:
激活一个窗口只是为了粘贴一些文本对我来说似乎有点不必要和麻烦;查看Control命令(例如Control、EditPaste )或通过COM访问 Word 。根据您的操作,我相信直接写入文本文件和/或内存存储可能是运行 Word 实例的更好替代方案。

PPS:
你可能要小心这样一个疏忽的剪贴板记录器。我假设您不希望所有类型的数据(例如密码)都出现在那里。

于 2013-08-04T17:35:30.053 回答