求大神指教一个HOOK呼出窗口,外挂呼出窗口这样一个过程,解决方法
求大神指教一个HOOK呼出窗口,外挂呼出窗口这样一个过程,
窗口出不来,,伤不起,求指教,,
------解决方案--------------------
调用钩子代码如下:
- C/C++ code
CWnd *pCWnd=CWnd::GetForegroundWindow(); LRESULT CALLBACK GameProc( int code, // hook code WPARAM wParam, // virtual-key code VK_HOME LPARAM lParam // 31位为0表示被按下 ) { if((wParam==VK_HOME)&&((lParam&(1<<31))==0)) { AfxMessageBox("按下HOME键"); if(newmain==NULL) //newmain是一个CDialogmain的全局指针变量 { newmain=new CDialogmain; newmain->Create(IDD_DIALOG1,pCWnd); newmain->ShowWindow(SW_SHOW); } } else { //根据当前呼出窗口的状态来显示或隐藏呼出窗口 newmain->ShowWindow(newmain->IsWindowVisible() ? SW_HIDE : SW_SHOW); } //add your code to process anything return CallNextHookEx(0,code,wParam,lParam); } //安装勾子 #define gamecaption "MSDN Library - October 2001" void SetHook() { AFX_MODULE_THREAD_STATE* AFXAPI AfxGetModuleThreadState(); HWND hwnd=FindWindow(NULL,gamecaption); if(hwnd=NULL) AfxMessageBox("未发现游戏"); DWORD tid=GetWindowThreadProcessId(hwnd,NULL); //安装线程勾子 ::SetWindowsHookEx(WH_KEYBOARD,&GameProc,::GetModuleHandle("gametest.dll"),tid); } int CGametestApp::ExitInstance() { delete newmain; newmain=NULL; return CWinApp::ExitInstance(); }
窗口出不来,,伤不起,求指教,,
------解决方案--------------------
调用钩子代码如下:
- C/C++ code
m_hInstance = NULL; //Dll句柄 m_INHook = NULL; //设置钩子函数入口指针 m_UIHook = NULL; //卸载钩子函数入口指针 HWND TestWind = NULL; remove("C:\\keys.txt"); if ((TestWind = ::FindWindowEx(NULL, 0, 0, "TestForHookWin")) == NULL) { AfxMessageBox("未发现指定窗口"); } else { m_hInstance = LoadLibrary("KeyBoardHook.dll"); if (m_hInstance) { m_INHook = (InstallHook)GetProcAddress(m_hInstance,"InstallHook"); m_UIHook = (UnInstallHook)GetProcAddress(m_hInstance,"UnInstallHook"); if (m_INHook != NULL) m_INHook(TestWind); } }