クリップボードコンテンツを現在の選択と入れ替えるためのシンプルなマクロを作成しました。しかし、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文を使用して回避策なしで*確実に*クリップボードに対応できますか? (Btw私はスタイル 'variable =%ClipoardAll%'の割り当てが問題の一部であることを発見した。クリップボードのバックアップの正しい形式は 'variable:= ClipboardAll'であり、動作も異なっている) – miroxlav
私が投稿した回答はsleep文を使用せず、私のために確実に動作します。任意の大きなクリップボードの内容をサポートしたい場合は、ClipWaitを増やしてツールチップを使用して、何が起こっているかをユーザーに知らせることをお勧めします。 –
これらの改善についてもう一度感謝します。私は答えをアップアップしましたが、現在は「Sleep」ステートメントの必要性の魔法を払拭しなかったので、それを受け入れたものとしてマークしません。あなたのコードを使用している場合、 'Send^v'の前後に' Sleep'を挿入するまでは、それは無理なく動作します。したがって、「睡眠」の魔法はまだ安定のために必要であるようです。 「睡眠」のない道があるかどうかという疑問はまだ開いている。 AutoHotKeyエキスパートとして、「スリープ」以外の手段がないと書いても、私はその答えを受け入れます。 – miroxlav