这是上一篇帖子http://bbs.pediy.com/showthread.php?t=198240&highlight=
我照着xjj的代码敲了一边,有两点疑问,
1,在XP下可以正常注入,发消息可以弹MessageBox,但Win7下不好用
2,::PostMessage(hwnd,WM_HELLO,NULL,NULL);好用
::SendMessage(hwnd,WM_HELLO,NULL,NULL);不好用
以下是代码
exe中的
void CEXEDlg::OnBnClickedinstall() //安装钩子按钮
{
// TODO: 在此添加控件通知处理程序代码
hwnd =::FindWindow(NULL,L"HOOK.txt - 记事本");
InstallHook(hwnd);
}
void CEXEDlg::OnBnClickedbox() //测试通信按钮
{
// ::SendMessage(hwnd,WM_HELLO,NULL,NULL); Send怎么就不好用呢?
::PostMessage(hwnd,WM_HELLO,NULL,NULL);
}
void CEXEDlg::OnBnClickeduninstall() //卸载钩子按钮
{
UninstallHook();
}
dll中的
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)//钩子回调
{
if(nCode==HC_ACTION)
{
LPMSG p=(LPMSG)lParam;
if(p->message==WM_HELLO)
{
AfxMessageBox(L"Hello World!",0,0);
}
}
return ::CallNextHookEx(hhook, nCode, wParam ,lParam);
}
HHOOK WINAPI InstallHook(HWND hwnd) //安装钩子
{
DWORD pid=::GetWindowThreadProcessId(hwnd,NULL);
hhook=::SetWindowsHookExW(WH_GETMESSAGE,(HOOKPROC)HookProc,theApp.m_hInstance,pid);
if(hhook!=NULL)
{
return hhook;
}
return 0;
}
BOOL WINAPI UninstallHook() //卸载钩子
{
return ::UnhookWindowsHookEx(hhook);
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课