Я создал средство просмотра буфера обмена в стандартном предлагаемом способе редактирования WndProc следующим образом.Средство просмотра буфера обмена: WM_DRAWCLIPBOARD иногда срабатывает много раз
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, сгенерированных с той же временной меткой, связанной с одними и теми же данными в буфере обмена. Любая идея, что может это сделать? Любые предложения о том, как получить дополнительную информацию об этих сообщениях?
Спасибо.
"It Happens" - F. Gump –
Спасибо за то, что он сообщил Крис. Как вы обычно это понимаете. Вы проверяете, являются ли полученные сообщения очень близкими друг к другу, и вы игнорируете их? –
Да. Обычно то, что вы хотите сделать, реагирует только на последнее событие. Это обычно включает в себя призыв себя обратно после того, как все было тихо на 500 мс или около того. –