Как определить, отправлен ли тип сообщения или опубликован?
Вопрос
Я знаю, что некоторые типы сообщений отправляются непосредственно в оконные процедуры, а другие отправляются в очередь сообщений потока, но я не нашел способа определить, будет ли сообщение отправлено или опубликовано.
MSDN наполовину полезен;это объяснило что происходит но приведенные в нем примеры, по-видимому, не являются исчерпывающими.
Есть ли окончательный список отправленных и отправленных?опубликованные сообщения или способ определить тип сообщения?
Решение
А некоторые сообщения не публикуются и не отправляются.Так обстоит дело с WM_PAINT, WM_TIMER и некоторыми другими.Они просто возвращаются GetMessage, когда очередь опубликованных сообщений пуста.
Я не уверен, какие приложения вы пытаетесь подключить, но если вам приходится задавать такие вопросы, то я немного пугаюсь.Нет ничего более неприятного для разработчика, когда он тратит время на сбои, о которых сообщают пользователи, и обнаруживает, что причина кроется в каком-то другом приложении, которое внедряет некорректный код.Действуйте осторожно!
Кроме того, Spy++ (инструмент, поставляемый с Visual Studio) покажет вам, какие сообщения публикуются/отправляются/получаются для любого конкретного приложения Live Windows.
Другие советы
Использовать InSendMessage
или InSendMessageEx
к определить, обрабатываете ли вы сообщение, отправленное вызовом к SendMessage
функция.
Страницы MSDN, документирующие каждое сообщение, следует считать авторитетным источником:
и т. д.