Autohotkey:如何确定剪贴板缓冲区内容大小

时间:2014-03-13 02:02:00

标签: size clipboard autohotkey clipboarddata

我有一个脚本可以抓取屏幕的某个部分并获取大约100-200字节长的文本到剪贴板中。有时,由于Web服务器超时或缺少CSS定义等,页面无法正确呈现并且理智的鼠标拖动,选择更大量的文本并将其复制到剪贴板。

我希望能够注意到这种情况并废弃剪贴板内容并再次运行我的脚本,直到它达到100-200字节的预期大小。如果大缓冲区持续发生一定次数,最后会中止脚本。

我有它的逻辑,但只有我无法弄清楚剪贴板大小以及如何在AHK脚本中获取它。它有预定义的变量吗?还是有另一个更复杂的方法?我想到的是将内容粘贴到记事本中并保存。然后查看文件大小,但它非常复杂。我想要一些没有磁盘写操作的东西。

有什么想法吗?我看到strlen命令但不确定如何使用它......

1 个答案:

答案 0 :(得分: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
}