6

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

剪贴板事件 C#

只有当表单保持在前台而不是最小化到托盘时,代码才能很好地工作但是:如果您添加一个通知图标并将表单最小化到托盘并将 showintaskbar 设置为 false(以便您在托盘中只有一个图标),则程序不会再捕获任何剪贴板更改...即使您将表单最大化,它也不会再次工作...您必须重新启动程序..

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

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

谢谢

4

2 回答 2

1

如果最小化它应该可以工作 - 虽然确实最小化或隐藏。如果您的“最小化”实现涉及破坏窗口,则该句柄无效。剪贴板链现在因下游监听剪贴板事件而中断......

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

- 克里斯

于 2010-03-22T01:29:15.663 回答
1

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

克里斯

于 2010-03-23T03:07:40.297 回答