c#捕获剪贴板更改,如果表单最小化到托盘,则无法工作

c#捕获剪贴板更改,如果表单最小化到托盘,则无法工作,c#,clipboard,notifyicon,C#,Clipboard,Notifyicon,使用此链接上的“捕获剪贴板事件代码”时出现问题: 只有当窗体保持在前台,而不是最小化到任务栏时,代码才有效:如果添加一个notifyicon,将窗体最小化到任务栏,并将showintaskbar设置为false(这样任务栏中只有一个图标),程序将不再捕获任何剪贴板更改。。。即使将表单最大化,它也不会再次工作…您必须重新启动程序 有没有办法解决这个问题!?即使表单最小化到托盘中,我如何捕获剪贴板更改 非常感谢您的帮助 谢谢如果最小化,它应该可以工作-尽管是真正的最小化,还是隐藏。如果“最小化”的

使用此链接上的“捕获剪贴板事件代码”时出现问题:

只有当窗体保持在前台,而不是最小化到任务栏时,代码才有效:如果添加一个notifyicon,将窗体最小化到任务栏,并将showintaskbar设置为false(这样任务栏中只有一个图标),程序将不再捕获任何剪贴板更改。。。即使将表单最大化,它也不会再次工作…您必须重新启动程序

有没有办法解决这个问题!?即使表单最小化到托盘中,我如何捕获剪贴板更改

非常感谢您的帮助


谢谢

如果最小化,它应该可以工作-尽管是真正的最小化,还是隐藏。如果“最小化”的实现涉及破坏窗口,那么该句柄无效。而剪贴板链现在已断开,因为任何正在侦听剪贴板事件的内容都将被删除

在那里抛出一些调试代码以将此.Handle显示为字符串(例如:“123456”)。将对SetClipboardViewer的调用放入表单上的单击事件中。单击它,查看编号。最小化,恢复。再次单击。你有相同的号码吗?你应该。如果没有,那么问题就在于此。剪贴板事件必须转到周围的窗口。它可以是背景中的隐藏窗口

-- Chris

因此,无论如何,您可以使用另一个隐藏的表单来捕获windows消息。永远不要关闭/重新创建该窗口。它在启动时打开,保持打开,但不可见。这会奏效的。
克里斯

那么,你试过我的想法了吗?如果是的话,把手是保持不变还是变了?嗨,克里斯。。。对不起,我上个星期一直不在。。我会试试的,但我以前确实试过这样的方式。。隐形形式的想法很好,我会尝试一下,然后告诉你。。再次谢谢你,我很高兴你还活着。让我知道。嗨,克里斯。。我刚试过你的建议,它很有效。。。我不确定,但似乎是这个。ShowInTaskbar=false;将终止窗体,或者至少在我的情况下,句柄将变为无效。。所以只需最小化到托盘,它工作得很好:)再次感谢您的帮助!别忘了投票并接受。如果显示句柄ID的技巧有所帮助,请将该项投票给上一项,并将该项留给下一项。谢谢。