Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых) |
![]() |
eXeL@B —› Программирование —› Замена DefWindowProc |
Посл.ответ | Сообщение |
|
Создано: 20 марта 2007 14:31 · Личное сообщение · #1 |
|
Создано: 20 марта 2007 14:46 · Личное сообщение · #2 |
|
Создано: 22 марта 2007 12:23 · Поправил: nv_xor · Личное сообщение · #3 |
|
Создано: 23 марта 2007 20:46 · Личное сообщение · #4 PE_Kill пишет: Пример кода в студию (ц) LRESULT __DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { const char *szDll = "User32.dll"; const char *szProc = "DefWindowProcA"; HMODULE hLib = LoadLibraryA(szDll); GetProcAddress(hLib, szProc); LRESULT result; __asm { push lParam; push wParam; push Msg; push hWnd; call eax; mov result, eax; } FreeLibrary(hLib); return result; } и потом #define DefWindowProc __DefWindowProc ![]() |
|
Создано: 23 марта 2007 20:55 · Личное сообщение · #5 |
|
Создано: 23 марта 2007 21:25 · Личное сообщение · #6 |
|
Создано: 25 марта 2007 13:59 · Личное сообщение · #7 |
|
Создано: 26 марта 2007 09:04 · Личное сообщение · #8 Может потому что, User32.dll уже загружена и тебе передается только ее хэндл. Попробуй переделать так (C не знаю, так что сорри): LRESULT __DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { const char *szDll = "User32.dll"; const char *szProc = "DefWindowProcA"; byte fLoaded = TRUE; HMODULE hLib = GetModuleHandleA(szDll); if hLib==0 { fLoaded=FALSE; hLib = LoadLibraryA(szDll); } GetProcAddress(hLib, szProc); LRESULT result; __asm { push lParam; push wParam; push Msg; push hWnd; call eax; mov result, eax; } if fLoaded==FALSE { FreeLibrary(hLib); } return result; } ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 28 марта 2007 22:09 · Личное сообщение · #9 |
![]() |
eXeL@B —› Программирование —› Замена DefWindowProc |