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

时间:2010-03-21 23:50:09

标签: c# clipboard notifyicon

我在使用此链接上的“Catch Clipboard Events code”时遇到问题:

Clipboard event C#

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

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

任何帮助都非常感谢...

由于

2 个答案:

答案 0 :(得分:1)

如果最小化它应该工作 - 尽管最小化或隐藏。如果你的“最小化”invovles的实现破坏了窗口,那么该句柄是无效的。现在,剪贴板链因为正在收听下游剪贴板事件而被破坏......

在那里抛出一些调试代码来显示this.Handle as a string(例如:“123456”)。在窗体上的单击事件中调用SetClipboardViewer。单击它,查看数字。最小化,恢复。再次点击。你有相同的号码吗?你应该。如果没有,那就存在问题。剪贴板事件必须转到一个停留的窗口。它可以是后台隐藏的窗口。

- 克里斯

答案 1 :(得分:1)

所以无论如何,你可以拥有另一个隐藏的表单,并用它来捕获windows消息。永远不要关闭/重新创建该窗口。它在启动时打开,保持打开状态,但不可见。这将有效。

克里斯