如何拦截Windows的消息并加以修改?
用Hook可拦截得消息,但不能更改,如SetWindowsHookEx(WH_CALLWNDPROC,HookProc,hDll,0);,拦WM_CLOSE的消息,我不想让系统处理这一条消我把 HookProc 的 lParam->message= WM_NULL 或 HookProc 中 return TRUE;都不行?各位高手有什么办法拦截Windows的消息并加以修改?分数不够再加。谢谢
用Hook可拦截得消息,但不能更改,如SetWindowsHookEx(WH_CALLWNDPROC,HookProc,hDll,0);,拦WM_CLOSE的消息,我不想让系统处理这一条消我把 HookProc 的 lParam->message= WM_NULL 或 HookProc 中 return TRUE;都不行?各位高手有什么办法拦截Windows的消息并加以修改?分数不够再加。谢谢
http://www.csdn.net/expert/topic/1046/1046911.xml?temp=.7596857
LRESULT CDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if( message == WM_CLOSE ) return TRUE; //不处理
if( message == WM_OLDMSG ) //加以修改
{
message = WM_NEWMSG;
}
return CDialog::DefWindowProc(message, wParam, lParam);
}
PreTranslateMessage(MSG* pMsg)
LRESULT CDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if( message == WM_CLOSE ) return TRUE; //不处理
if( message == WM_OLDMSG ) //加以修改
{
message = WM_NEWMSG;
}
return CDialog::DefWindowProc(message, wParam, lParam);
}肯定没有用的。
LRESULT CALLBACK _new_msg_handle(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
LRESULT lReturn = 0;
WORD hw, lw;
NODE *pnode; pnode = (NODE *)GetWindowLong(hwnd, GWL_USERDATA);
hw = HIWORD(wParam);
lw = LOWORD(wParam);
if(uMsg==WM_COMMAND)
{
// print_log("hwnd recv msg hw = %u, lw = %u\r\n", hw, lw);
if(hw == BN_CLICKED)
{
if(lw == IDOK)
{
pnode->bsendrecord = TRUE;
// print_log("hwnd recv msg BN_CLICKED -> IDOK\r\n");
}//if(lw == IDOK)
else if(lw == 0x65)
{
if(pnode->flag == RECV)
{
log_chat(hwnd, FALSE);
}
}
}//else if (hw == BN_CLICKED)
}//if(uMsg==WM_COMMAND) if(pnode->oldfunc)
lReturn = ::CallWindowProc(pnode->oldfunc, hwnd, uMsg, wParam, lParam);
return lReturn;
}//以下代码修改窗口过程
SetWindowLong(hWnd, GWL_USERDATA, (LONG)pnode);
SetWindowLong(hWnd, GWL_WNDPROC, (LONG)_new_msg_handle);
方法2、钩Api函数,如果是你要的消息,直接修改我用上面的办法写了一个东东,监视QQ聊天过程,前段时间在这里公开了大部分代码,过几天写点东西并帖出来