当剪贴板更改为新内容时通知
Notify when clipboard change to something new
我想在我的剪贴板与之前的剪贴板不同时显示消息框。这是我所管理的:
#Persistent
OnClipboardChange("ClipChanged")
return
lastClipboardContent := ""
ClipChanged(Type) {
if lastClipboardContent != Clipboard
{
lastClipboardContent := Clipboard
MsgBox changed
}
}
它实际上每次我的剪贴板更改时都会显示消息框,即使内容与以前相同。为什么?
第一个问题是您的代码行 lastClipboardContent := ""
从未达到,所以它实际上什么也没做。
虽然,即使达到了它,它对您的脚本也没有任何用处,这是我们讨论第二个问题的地方,变量范围。
在该函数内部,任何变量仅在该函数的生命周期内存在(除非另有说明)。
由于您希望变量在每次调用函数时都保留其值,因此您需要将其定义为 static.
全局或超级全局也可以,但我不会为此推荐它们,而且它们也不适合这个。
其他人遇到了你遇到的一些问题,我写了一个更深入的答案,如果你有兴趣可以从中阅读。
这是修改后的版本:
#Persistent
OnClipboardChange("ClipChanged")
return
ClipChanged()
{
static lastClipboardContent
if (lastClipboardContent != Clipboard)
{
ToolTip, % lastClipboardContent " changed to " Clipboard
lastClipboardContent := Clipboard
}
}
我想在我的剪贴板与之前的剪贴板不同时显示消息框。这是我所管理的:
#Persistent
OnClipboardChange("ClipChanged")
return
lastClipboardContent := ""
ClipChanged(Type) {
if lastClipboardContent != Clipboard
{
lastClipboardContent := Clipboard
MsgBox changed
}
}
它实际上每次我的剪贴板更改时都会显示消息框,即使内容与以前相同。为什么?
第一个问题是您的代码行 lastClipboardContent := ""
从未达到,所以它实际上什么也没做。
虽然,即使达到了它,它对您的脚本也没有任何用处,这是我们讨论第二个问题的地方,变量范围。
在该函数内部,任何变量仅在该函数的生命周期内存在(除非另有说明)。
由于您希望变量在每次调用函数时都保留其值,因此您需要将其定义为 static.
全局或超级全局也可以,但我不会为此推荐它们,而且它们也不适合这个。
其他人遇到了你遇到的一些问题,我写了一个更深入的答案,如果你有兴趣可以从
这是修改后的版本:
#Persistent
OnClipboardChange("ClipChanged")
return
ClipChanged()
{
static lastClipboardContent
if (lastClipboardContent != Clipboard)
{
ToolTip, % lastClipboardContent " changed to " Clipboard
lastClipboardContent := Clipboard
}
}