Привет, форумчане! В программе без сырцов, нужно найти обработчик пункта меню. Можете подсказать, есть ли по данному вопросу литература, или мануалы какие-нибудь, кроме Петзольда?
да и еще, программа похоже хитрая, все виндовс процедуры проанализировал, обработчика не нашел, искал только WM_LBUTTONDOWN и WM_LBUTTONUP, возможно не те мессаджи анализировал? Есть обработка LBUTTONUP, но в программе заканчивается на функции DefWindowProc.
1) Петзольд как помнится учит писать, а не искать в бинарниках без сырцов... 2) да ешкин же кот, причем тут WM_LBUTTON, если сам говоришь про меню??? обрабатывается WM_COMMAND, и младшее слово wparam. Меню - это вещь в себе, оно клик на мышь само обрабатывает, в программу посылает только ID выбранного элемента меню. ...может все-таки сначала Петзольда, чтоб логику поиска нужного места понять?
neutronion возможно да, возможно надо анализировать WM_COMMAND в оконной функции (в олли надо ставить conditional breakpoint) адрес оконной функции можно узнать например утилитой WinSpy++
Ладно, короче так: я логгирую все мессаги, которые приходят в winproc. Я точно знаю, что в результате выбора пункта меню, обработчиком вызывается CreateFileA, соответственно ставлю точку останова на этой функции. Но с момента нажатия меню и останова на CreateFileA мессаг пришло слишком много. Вопрос, как выявить нужную мессагу в логе, которая инициировала обработчик? Имея эту информацию, нетрудно будет выявить обработчик меню. Кстати говоря, все менюшки и окошки custom. Разработчик создал на базе виндовских, свои окошки и свои менюшки.
кажется въехал, что происходит. Обработка действительно происходит на WM_COMMAND, однако обработчки посылает еще туеву хучу всяких мессаг, чтобы замести следы, в результате таких манипуляций, при трассировке мы вновь оказываемся на начале winproc. Протрассировал вручную, все же дошел до CreateFileA. Теперь нужно сделать трейс видимо.