これが私がしたことです。クリップボードは AutoHotkey の変数なので、空かどうかを確認できます。最初にクリップボードをクリアし、control+c を送信してから、クリップボードがまだ空かどうかを確認しました。必要に応じて、最初に現在のクリップボードを一時的な場所に一時的に移動できます。
ClipSaved := ClipboardAll
Clipboard = ; empties the clipboard
Send ^+{Left} ; I just used highlight left to select text, you can replace this with
; whatever your program uses to select an input.
Send ^c ; attempt to copy text
If Clipboard = ; checks to see if clipboard is empty
{
break ; Put what you want to do if the clipboard is empty, I used break to stop a loop
}
Clipboard := ClipSaved ; puts the original clipboard contents back
ユーザーが前方または後方の方向を選択できる開いているドキュメントからテキストを検索していました。逆方向に移動すると、ドキュメントの先頭でループに陥っていました。ループ制限を設定して無限ループにならないようにしましたが、ループが終了するまで待機する時間が無駄になりました。クリップボードが空の場合、break 関数を使用してループを終了しました。
クレジットが必要な場所にクレジットを与えるために、他のヒントが記載された別の投稿からインスピレーションを得ました。このスクリプトで空の変数を確認できると投稿しました。
http://www.autohotkey.net/~deleyd/xprxmp/autohotkey_expression_examples.htm#J
v := ""
If v =
MsgBox v = ""
If (v = "")
MsgBox v = ""
AutoHotkey ドキュメント Web サイトから、クリップボードのコンテンツを一時的に保存して置き換える方法を見つけました。http://www.autohotkey.com/docs/misc/Clipboard.htm
ClipSaved := ClipboardAll ; Save the entire clipboard to a variable of your choice.
;... here make temporary use of the clipboard, such as for pasting Unicode text via Transform Unicode ...
Clipboard := ClipSaved ; Restore the original clipboard. Note the use of Clipboard (not ClipboardAll).
ClipSaved = ; Free the memory in case the clipboard was very large.
お役に立てれば。サミュエル