2

画面の特定の部分をスクレイピングし、約 100 ~ 200 バイトのテキストをクリップボードに取得するスクリプトがあります。場合によっては、Web サーバーのタイムアウトや CSS 定義の欠落などが原因で、ページが正しくレンダリングされず、正常なマウス ドラッグによって大量のテキストが選択され、クリップボードにコピーされることがあります。

この状況に気づき、クリップボードの内容を廃棄して、予想されるサイズが 100 ~ 200 バイトになるまで、スクリプトを再度実行できるようにしたいと考えています。大きなバッファが一定回数発生し続ける場合は、最後にスクリプトを中止します。

ロジックはありますが、クリップボードのサイズと AHK スクリプト内でそれを取得する方法を理解できないことだけです。事前定義された変数はありますか? または、別のより複雑な方法がありますか? 頭に浮かぶのは、内容をメモ帳に貼り付けて保存することです。次に、ファイル サイズを確認しますが、非常に複雑です。ディスク書き込み操作のないものが欲しい。

何か案は ?strlen コマンドを見ましたが、使い方がわかりません...

4

1 に答える 1

1

クリップボード内のテキストの場合、これは機能します:

ClipSize := strlen(clipboard)

スクリプト例

sClip:=GetClipboardSize(Clipboard)
sClip_a:=GetClipboardSize(ClipboardAll)

MsgBox Clipboard Size: %sClip%`nClipboardAll Size: %sClip_a%

GetClipboardSize(c) {
    if (!s:=strlen(c)) {
        tmp:=A_temp "\clipboardsize_" A_TickCount "~~tempfile~~.tmp"
        FileDelete,%tmp%
        FileAppend,%ClipboardAll%,%tmp%
        FileGetSize,s,%tmp%
        FileDelete,%tmp%
    }
    return s
}
于 2014-03-13T05:54:13.827 に答える