为什么脚本无法暂停/暂停?

时间:2013-08-04 13:31:30

标签: autohotkey systray

我写了这个简单的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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

<强> P.P.S:
你可能要小心这种疏忽的剪贴板记录器。我假设您不希望每种类型的数据(例如密码)出现在那里。