这是我目前使用的解决方案。基本上,它归结为发送ctrl+c
,等待一定的超时,然后看看文本是否真的被复制。如果不是,我知道没有选择。
因为Windows需要一定的时间来执行copy
操作,所以没有办法避免等待超时。我将超时设置为0.15秒,所以不会太糟糕。
下面是我用来抓取剪贴板内容或检查它是否为空的功能。我总是调用这个函数先:
clipped_text :=
clip_empty := false
ClipSaved =
is_clipped := false
clip_speed := 0.15
Clip() {
global ClipSaved
global clip_empty
global clipped_text
global is_clipped
global clip_speed
if (!is_clipped) {
ClipSaved := ClipboardAll ; Save the entire clipboard to a variable of your choice.
; msgbox % ClipSaved
is_clipped := true
}
clipboard = ; Empty the clipboard
Send ^{c}
ClipWait clip_speed
if (ErrorLevel = 1)
{
clip_empty := false
}
else
{
clip_empty := true
clipped_text := clipboard
}
}
而且我用这个功能来实际获得剪贴板中的内容或检查它是否是空的:
IsTextSelected() {
global ClipSaved
global clip_empty
global clipped_text
if (clip_empty == true) {
return true
}
else {
return false
}
}
要获取剪贴板我只是看内容在clipped_text变量。
执行“剪辑()”手术后,我总是调用下面的函数来恢复剪贴板(该功能为Clip()
多次调用称为一次):
UnClip() {
global ClipSaved
global clip_empty
global clipped_text
global is_clipped
is_clipped := false
Clipboard := ClipSaved
ClipSaved =
}
的问题是,我编程方式发送CTRL + C,我想看看文本被捕获。我用它来检查是否有选择(即,现在选择的文本,还是不选择)。所以这个解决方案不能帮助我,因为我已经知道ctrl + c正在发送,因为我是发送它的人!尽管如此,谢谢你的创意,我会编辑这个问题,使其更清晰。 – 2010-08-01 21:14:28