我以标准建议的方式创建了一个剪贴板查看器,如下所示编辑 WndProc。
case WM_DRAWCLIPBOARD:
Logger.Main.LogMessage("Draw Clipboard event");
if (OnClipboardChanged != null) {
OnClipboardChanged(this, new ViewChangeEventArgs());
}
WindowAPI.SendMessage(NextClipboardViewer, m.Msg, m.WParam, m.LParam);
break;
case WM_CHANGECBCHAIN:
Logger.Main.LogMessage("Change CB Chain");
if (m.WParam == NextClipboardViewer) {
NextClipboardViewer = m.LParam;
}
else {
WindowAPI.SendMessage(NextClipboardViewer, m.Msg, m.WParam, m.LParam);
}
break;
当剪贴板中有新数据可用时,我的应用程序只需要得到通知。一切正常,消息被正确检测到。
有时(这很难重现)我会收到大量 WM_DRAWCLIPBOARD 生成的事件,这些事件使用相同的时间戳生成,与剪贴板中的相同数据相关联。知道什么可能导致这种情况吗?有关如何获取有关这些消息的更多信息的任何建议?
谢谢。