0
我創建了簡單的宏來交換剪貼板內容與當前選擇。但是,當我刪除Sleep
命令時,它會停止正常工作:它不會完成剪貼板操作。試試沒有這些命令來看看我的意思。剪貼板操作不需要人工延遲使用睡眠語句
但Sleep
命令比適當的解決方案更加黑客。如果500毫秒太長 - 或者在某些情況下 - 等待時間太短會怎樣?
請問沒有Sleep
表示合適的AutoHotKey方法是什麼?
^CapsLock::
ClipboardOld=%ClipboardAll%
Send ^c
Sleep 500
ClipWait
ClipboardNew=%ClipboardAll%
Sleep 500
Clipboard=%ClipboardOld%
Sleep 500
ClipboardOld= ;clear global variable to conserve memory
Send ^v
Sleep 500
Clipboard=%ClipboardNew%
Sleep 500
ClipboardNew= ;clear global variable to conserve memory
Return
謝謝你的回答。我可以確定哪些睡眠語句是必要的(正如您所說,問題與大數據或高CPU負載有關),但是我的問題是在保持代碼可靠工作的同時是否可以完全忽略它們,因爲我想了解原理。 AutoHotKey能否可靠地使用剪貼板工作,而無需使用Sleep語句的解決方法? (順便說一下,我發現在樣式'變量=%ClipoardAll%'中的賦值是問題的一部分。剪貼板備份的正確形式是'variable:= ClipoardAll',它的行爲也不同。) – miroxlav
我發佈的答案沒有使用sleep語句,對我來說可靠地工作。如果你想支持任意大的剪貼板內容,我建議增加ClipWait並使用工具提示讓用戶知道發生了什麼。 –
我再次感謝您的這些改進。我提出了答案,但我現在不會將其標記爲接受,因爲它沒有解除需要「睡眠」陳述的魔力。如果我使用你的代碼,它將不可靠地工作,直到我在'Send^v'前後插入'Sleep'。所以具有「睡眠」的魔法似乎仍然是穩定的必要條件。沒有「睡眠」的方式是否仍然存在。如果您寫作AutoHotKey專家,除了使用「睡眠」之外沒有其他辦法,我會接受答案。 – miroxlav