微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决当剪贴板更改为新内容时通知

当我的剪贴板与上一个不同时,我想显示消息框。这是我管理的:

#Persistent
OnClipboardChange("ClipChanged")
return

lastClipboardContent := ""

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

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

解决方法

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

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

这里是修订版:

#Persistent
OnClipboardChange("ClipChanged")
return

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。