vc学习笔记之hook(消息钩子过程)
2013-11-20 16:48
561 查看
//hookdll00.cpp
//---------------------
#include<windows.h>
//把全局变量声明在新建dll节“MySec”中
#pragma data_seg("MySec")
HWND ghwnd=NULL;
#pragma data_seg()
//把dll节“MySec”设为RWS(read write share)
#pragma comment(linker,"/section:MySec,RWS")
HHOOK hmousehook=NULL;
HHOOK hkeyboardhook=NULL;
LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lParam )
{
return 1;
}
LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam,LPARAM lParam)
{
if(VK_F2==wParam)
{
SendMessage(ghwnd,WM_CLOSE,0,0);
UnhookWindowsHookEx(hmousehook);
UnhookWindowsHookEx(hkeyboardhook);
}
else
return 1;
}
void sethook(HWND hwnd)
{
ghwnd=hwnd;
hmousehook=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("hookdll00"),0);
//GetModuleHandle函数参数类型为LPCWSTR,如调试失败,hookdll00工程应设为多字节或未设置
hkeyboardhook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("hookdll00.dll"),0);
}
//-----------------------
//hookdll00.h
//-----------------------
#include <windows.h>
void sethook(HWND hwnd);
//------------------------
//hookdll00.def
//------------------------
LIBRARY hookdll00
EXPORTS
sethook
//-------------------------
//-------------------------
新建基于对话框的mfc应用程序hooktest00,用来测试hookdll00。
在hooktest00Dlg类的OnInitDialog()函数中添加如下代码:
int x=GetSystemMetrics(SM_CXSCREEN);
int y=GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(&wndTopMost,0,0,x,y,SWP_SHOWWINDOW);//把当前窗体设为Top窗体,并占满屏幕。
sethook(m_hWnd);
//---------------------------
//---------------------
#include<windows.h>
//把全局变量声明在新建dll节“MySec”中
#pragma data_seg("MySec")
HWND ghwnd=NULL;
#pragma data_seg()
//把dll节“MySec”设为RWS(read write share)
#pragma comment(linker,"/section:MySec,RWS")
HHOOK hmousehook=NULL;
HHOOK hkeyboardhook=NULL;
LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lParam )
{
return 1;
}
LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam,LPARAM lParam)
{
if(VK_F2==wParam)
{
SendMessage(ghwnd,WM_CLOSE,0,0);
UnhookWindowsHookEx(hmousehook);
UnhookWindowsHookEx(hkeyboardhook);
}
else
return 1;
}
void sethook(HWND hwnd)
{
ghwnd=hwnd;
hmousehook=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("hookdll00"),0);
//GetModuleHandle函数参数类型为LPCWSTR,如调试失败,hookdll00工程应设为多字节或未设置
hkeyboardhook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("hookdll00.dll"),0);
}
//-----------------------
//hookdll00.h
//-----------------------
#include <windows.h>
void sethook(HWND hwnd);
//------------------------
//hookdll00.def
//------------------------
LIBRARY hookdll00
EXPORTS
sethook
//-------------------------
//-------------------------
新建基于对话框的mfc应用程序hooktest00,用来测试hookdll00。
在hooktest00Dlg类的OnInitDialog()函数中添加如下代码:
int x=GetSystemMetrics(SM_CXSCREEN);
int y=GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(&wndTopMost,0,0,x,y,SWP_SHOWWINDOW);//把当前窗体设为Top窗体,并占满屏幕。
sethook(m_hWnd);
//---------------------------
相关文章推荐
- HOOK钩子机制学习笔记(1)
- 学习笔记-HOOK钩子(1)l
- Hook学习笔记(一)Hook局部钩子实现
- HOOK钩子机制学习笔记(2) - 钩子类型MSDN翻译整理
- 学习钩子(Hook)过程中遇到的一些问题
- HOOK钩子机制学习笔记(1)
- HOOK钩子机制学习笔记(3) - 钩子常用结构体MSDN翻译整理
- WIN32 API/WTL 学习笔记(消息传递过程)
- Flask学习笔记之钩子函数(hook)
- VC++ 学习笔记(11)——传递自定义消息
- Hook :VC++消息钩子编程
- VC++学习笔记之消息处理机制和窗口过程函数
- 孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理
- HOOK钩子机制学习笔记(1)
- HOOK钩子机制学习笔记(2)
- HOOK钩子机制学习笔记
- HOOK钩子机制学习笔记(3)
- [Hook]个人学习笔记——挂个简单的钩子(全局鼠标Hook)(.NET)
- HOOK钩子机制学习笔记(4) - 钩子函数说明
- VC++ Hook截取鼠标点击窗口消息的问题!全局钩子