资源描述:
《Hook和数据库访问.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Hook和数据库访问1.安装Hook过程屏蔽鼠标键盘消息新建一个基于对话框的MFC应用程序,取名InnerHook,在CInnerHookDlg类上的OnInitDialog函数中安装Hook过程,编辑InnerHookDlg.cpp,如下://全局变量,用来保存键盘钩子过程的句柄 HHOOK g_hKeyboard=NULL; HHOOK g_hMouse=NULL; HWND g_hWnd=NULL; LRESULT CALLBACK MouseProc( int nCode, // h
2、ook code WPARAM wParam, // message identifier LPARAM lParam // mouse coordinates )//鼠标消息过程 { return 1; } LRESULT CALLBACK KeyboardProc( int code, // hook code WPARAM wParam, // virtual-key code LPARAM lParam // keystroke-message
3、 information )//键盘消息过程 { / //if(VK_SPACE==wParamVK_RETURN==wParam)//屏蔽空格与键 if(VK_F4==wParam && (1==(lParam>>29 & 1))) return 1; else return CallNextHookEx(g_hKeyboard,code,wParam,lParam); / if(VK_F2==wParam) { ::
4、SendMessage(g_hWnd,WM_CLOSE,0,0); UnhookWindowsHookEx(g_hKeyboard);//移除hook过程 UnhookWindowsHookEx(g_hMouse); } return 1; } BOOL CInnerHookDlg::OnInitDialog() { ......... ......... // TODO: Add extra initialization here
5、 g_hWnd=m_hWnd; g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());//安装鼠标钩子过程 g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());//安装键盘钩子过程 return TRUE; // return TRUE unless you set th
6、e focus to a control }2.屏蔽所有的进程与线程的键盘和鼠标消息钩子过程dll新建一个空的动态链接库工程,取名Hook,并新建一个C++源文件,也取名Hook,编辑:#include HHOOK g_hMouse; HINSTANCE g_hInst;//用来存放当前动态链接库模块的句柄 / //方式一 BOOL WINAPI DllMain( HINSTANCE hinstDLL, // handle to the DLL module DWORD
7、fdwReason, // reason for calling function LPVOID lpvReserved // reserved )//得到动态链接库模块的句柄 { g_hInst=hinstDll; } / LRESULT CALLBACK MouseProc( int nCode, // hook code WPARAM wParam, // message identifier LPARAM lParam // mouse coor
8、dinates )//鼠标的钩子过程 { return 1; } void SetHook() { //SetWindowsHookEx(WH_MOUSE,MouseProc,g_hInst,0); //方式一 g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook"),0);//方式二 //安装鼠标钩子过程与