Как искать неясные коды сообщений Windows? - PullRequest
4 голосов
/ 19 февраля 2010

Я получаю сообщение Windows с кодом 1092 (0x444), и я не знаю, что это такое. Это выше, чем WM_USER, но я искал нашу базу кода и не нашел ссылки, поэтому я не думаю, что это одна из наших ... использует ли Windows пользовательские сообщения выше 0x400, и если да, то как я могу найти это?

Ответы [ 3 ]

8 голосов
/ 19 февраля 2010

Из документа WM_USER :

Номера сообщений во втором диапазоне (От WM_USER до 0x7FFF) может быть определяется и используется приложением для отправлять сообщения в приватном окне учебный класс. Эти значения не могут быть использованы для определить сообщения, которые имеют смысл во всем приложении, потому что некоторые предопределенные классы окон уже определить значения в этом диапазоне. Для пример, предопределенные классы управления такие как КНОПКА, РЕДАКТИРОВАТЬ, LISTBOX, и COMBOBOX может использовать эти значения. Сообщения в этом диапазоне не должны быть отправлены в другие приложения, если приложения были разработаны для обмениваться сообщениями и прикреплять то же значение, что и для номеров сообщений.

Итак, это сообщение может быть чем угодно .
Например, быстрый взгляд на исходный код MFC показывает эти определения

// COMMCTRL.H
#define TB_ADDBUTTONSW        (WM_USER + 68)

// RICHEDIT.H
#define EM_SETCHARFORMAT      (WM_USER + 68)

Я искал 68, потому что 0x444 = 0x400 + 0x44 = WM_USER + 68

0 голосов
/ 19 февраля 2010

Любое приложение может использовать сообщения выше WM_USER или WM_APP.Сама Windows даже использует сообщения выше WM_USER.Поскольку любое приложение может передавать эти значения сообщений (а некоторые - потому что они написаны идиотами), вы должны всегда использовать зарегистрированные сообщения для личных сообщений.

Вы можете использовать Spy ++, чтобы попытаться отследить эти сообщенияно вы не можете гарантировать их остановку, поэтому лучше избегать их, используя RegisterWindowMessage.

0 голосов
/ 19 февраля 2010

Вы можете искать в заголовках Windows строки типа 0x444, 0x0444, 0x00000444 и т. Д.

Это также может быть мошенническое приложение, отправляющее сообщения, которых не должно быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...