AHK:将 ClipboardAll 转换为字符串(不调用 Clipboard)

问题描述 投票:0回答:3

在 AHK 脚本中,我想将之前通过 ClipboardAll 从剪贴板读取的数据转换为我可以操作的字符串,但很奇怪的是 StrGet() 无法做到这一点。

!2:: clipget()
clipget()
    {
    clip := ClipboardAll
    MsgBox % clip
    MsgBox % NumGet(clip)
    MsgBox % StrGet(clip)
    Return
    }

首先 MsgBox 返回空,因为剪辑不是字符串,正如预期的那样。

第二个返回位数据的数字表示形式,如预期的那样。

第三个没有返回任何内容,不符合预期。

我知道我可以首先使用 Clipstr = Clipboard 来将其转换,但随后我必须读取剪贴板两次,如下所示:

clip := ClipboardAll
clipstr := Clipboard

同时获取字符串数据和位数据,但这看起来不太酷,并且如果剪贴板上的数据很大,则需要更长的时间。

也可以是一种愚蠢但实用的方式

Clipboard := clip
Sleep 500
clipstr := Clipboard

不用说,这不是我想要的。

那么,有没有办法从剪贴板中获取字符串所有位数据,类似于

clip := ClipboardAll
clipstr := MagicalFunction(clip)

autohotkey clipboard
3个回答
0
投票

我不确定这是否有帮助。但剪贴板并不是当前复制的那段字符串。剪贴板是您的计算机保存复制内容的地方,您可以在其中找到以前复制的内容。

我在 ahk 的剪贴板文档中找到的代码是这样的

Loop, parse, clipboard, `n, `r
{
    MsgBox, %A_LoopField% is your current copied first line..
}

我不太熟悉 ahk 的变量系统,但我认为这应该给出 %A_LoopField% 的字符串输出


0
投票
  1. 在 AHK 脚本中:将 ClipBoardAll 保存到文件。
  2. 在外部文本编辑器中:在文件的开头写入一些文本,例如。 “rrr”(或者您可以通过命令行bat文件中的“复制+”来完成)
  3. 在 AHK 脚本中:将文件读取到变量。

0
投票

您需要内置变量“A_Clipboard”。

根据 ClipboardAll 的文档:

“内置变量 A_Clipboard 反映了以纯文本形式表示的 Windows 剪贴板的当前内容。”

© www.soinside.com 2019 - 2024. All rights reserved.