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

Autohotkey 当剪贴板更改为新内容时通知,autohotkey,Autohotkey,当我的剪贴板与上一个不同时,我想显示messagebox。这就是我所做到的: #Persistent OnClipboardChange("ClipChanged") return lastClipboardContent := "" ClipChanged(Type) { if lastClipboardContent != Clipboard { lastClipboardContent := Clipboard

当我的剪贴板与上一个不同时,我想显示messagebox。这就是我所做到的:

#Persistent
OnClipboardChange("ClipChanged")
return

lastClipboardContent := ""

ClipChanged(Type) {
    if lastClipboardContent != Clipboard
    {
        lastClipboardContent := Clipboard
        MsgBox changed
    }
}

每次我的剪贴板更改时,它实际上都会显示messagebox,即使内容与上一次相同。为什么?

第一个问题是,您的代码行
lastClipboardContent:=''
甚至从未到达,因此它实际上什么也没做。
尽管如此,即使达到了它,它也不会对您的脚本有任何用处,这就是我们要讨论的第二个问题,变量作用域

在该函数中,任何变量仅在该函数的生命周期内存在(除非另有规定)。
由于您希望变量在每次调用函数时都保留其值,因此需要将其定义为。
Global或super Global也可以,但我不推荐它们,而且它们也不适合于此。
当你遇到其他人的问题时,我写了一个更深入的答案,如果你感兴趣,可以从中阅读

以下是修订版:

#Persistent
OnClipboardChange("ClipChanged")
return

ClipChanged() 
{
    static lastClipboardContent
    if (lastClipboardContent != Clipboard)
    {
        ToolTip, % lastClipboardContent " changed to " Clipboard 
        lastClipboardContent := Clipboard
    }
}

第一个问题是,您的代码行
lastClipboardContent:=''
甚至从未到达,因此它实际上什么也没做。
尽管如此,即使达到了它,它也不会对您的脚本有任何用处,这就是我们要讨论的第二个问题,变量作用域

在该函数中,任何变量仅在该函数的生命周期内存在(除非另有规定)。
由于您希望变量在每次调用函数时都保留其值,因此需要将其定义为。
Global或super Global也可以,但我不推荐它们,而且它们也不适合于此。
当你遇到其他人的问题时,我写了一个更深入的答案,如果你感兴趣,可以从中阅读

以下是修订版:

#Persistent
OnClipboardChange("ClipChanged")
return

ClipChanged() 
{
    static lastClipboardContent
    if (lastClipboardContent != Clipboard)
    {
        ToolTip, % lastClipboardContent " changed to " Clipboard 
        lastClipboardContent := Clipboard
    }
}