2013-08-04 95 views
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 

回答

1

兩個PauseSuspend並不意味着阻止自動調用的子程序等OnClipboardChangeGuiClosePause只是阻止當前線程,這意味着每個新創建的線程仍將運行,剪貼板更改確實會創建一個新線程。 Ergo,Pause無法阻止它。
在這種情況下,您需要在「事件子例程」中實現自己的一段邏輯,用於檢查某種狀態
與你的前提,使功能走向取決於暫停狀態,一個相當簡單的方法是檢查內置A_IsPaused

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

有實現這個肯定很多方面。您還可以定義自己的熱鍵來激活/停用/切換自定義狀態。

P.S:
激活窗口僅粘貼一些文字似乎有點不必要的麻煩,並給我;查看Control命令(例如Control, EditPaste)或通過COM訪問Word。根據您的操作,我認爲直接寫入文本文件和/或內存存儲可能是運行Word實例的更好選擇。

P.P.S:
你可能要小心這樣的疏忽剪貼板記錄器。我假設你不希望每一種數據(例如密碼)都出現在那裏。