当剪贴板更改为新内容时通知

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
    }
}