c#抓住剪贴板更改,如果窗体最小化到托盘,将无法工作

leb*_*ero 6 c# clipboard notifyicon

我在使用此链接上的"Catch Clipboard Events代码"时遇到问题:

剪贴板事件C#

只有当表单停留在前台时,代码才能生效,而不是最小化到托盘但是:如果你添加一个notifyicon并将表单最小化到托盘并将showintaskbar变为false(这样你在托盘中只有一个图标),程序不会再抓住任何剪贴板更改...即使你最大化表单,它也不会再工作...你必须重新启动程序..

关于如何解决这个问题的任何想法!即使表格最小化到托盘中,我怎样才能捕捉到剪贴板的变化!

任何帮助真的很感激......

谢谢

Chr*_*ton 1

如果最小化的话它应该可以工作——尽管确实最小化了,或者隐藏了。如果您的“最小化”实现涉及销毁窗口,则该句柄无效。对于正在侦听下游剪贴板事件的任何内容,剪贴板链现在都已损坏......

在其中添加一些调试代码以将 this.Handle 显示为字符串(例如:“123456”)。将对 SetClipboardViewer 的调用放在窗体上的单击事件中。点击它,看到号码。最小化,恢复。再次单击。你有同样的号码吗?你应该。如果没有,那就是问题所在。剪贴板事件必须发送到保留在周围的窗口。它可以是背景中的隐藏窗口。

- 克里斯