Как узнать адрес диалоговой (не оконной) процедуры диалогового окна, чтобы можно было поставить бряк на нее в отладчике?
Код (Text): HWND CreateDialogParam( HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam ); lpDialogFunc и есть твоя процедура. Или не об этом вопрос?
censored Мне надо в чужом приложении, там диалог создается функцией CreateDialogIndirectParamA, я ее перехватывал, пытался ставить бряк на ее lpDialogFunc, но там что-то не то, и Олли пишет что outside the code section, и не вызывается она когда надо... Velheart Видимо примерно так и придется делать...
Код (Text): LONG GetWindowLong( HWND hWnd, int nIndex ); GWL_WNDPROC Retrieves the address of the window procedure, or a handle representing the address of the window procedure. You must use the CallWindowProc function to call the window procedure. не оно?
Можно просто запустить диалог, подсмотреть windowjugler'ом хэндлл диалогового окна, и поставить условный брэйк на dispatchmessage с WM_COMMAND и хэндлом нужного окна, а оттуда протрассировать пошагово(совсем не долго), пока не выйдешь из user32 обратно в исследуемый модуль, я примерно так искал id для меню, чтобы автоматизировать работу с процесс-монитором, котрый из коммандной строки не все опции поддерживает =)
JCronos, kero Мне нужен был адрес именно процедуры диалогового окна, а не оконной процедуры, адрес оконной процедуры в данном случае указывает на user32.DefDlgProc.
K10, вы уж определитесь, что у вас "оконная процедура" - GWL_WNDPROC или DWL_DLGPROC И таки похексите с адреса из DWL_DLGPROC в приаттаченной болванке...