hook.def 源码
LIBRARY GHookDll
EXPORTS
ShanHook @1
SetHook @2
hook.cpp源码:
#include <windows.h>
HHOOK g_hMouse = NULL;
bool cg = true;
//鼠标钩子过程
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
return 1; // 返回0则放任系统,返回1则丢掉信息
}
//安装鼠标钩子过程的函数
HHOOK SetHook()
{
g_hMouse = SetWindowsHookExW(WH_GETMESSAGE, MouseProc, GetModuleHandle(L"GHookDll"), 0); //把鼠标事件改为消息事件
return g_hMouse;
}
//删除鼠标钩子
bool ShanHook()
{
cg = UnhookWindowsHookEx(g_hMouse);
return cg;
}
//https://blog.csdn.net/qingdujun/article/details/25861615
在目录\hook\GHookDll\Debug下复制如下两个文件提供给python调用
错误说明1:
// SetWindowsHookExW 函数不接受3个参数的意思是第三个参数有错误,VSC翻译不准确
//错误 C2664 “HMODULE GetModuleHandleW(LPCWSTR)”: 无法将参数 1 从“const char [9]”转换为“LPCWSTR”
//当前工程只支持Unicode字符,不支持多字节,此时如果代码中出现多字节字符串, 就会报错
//在需要变为宽字节的字符串前边,加上 L 或者 _T( )
//Eg. HINSTANCE hIcmp = LoadLibrary( L"ICMP.DLL" );
//或者 HINSTANCE hIcmp = LoadLibrary( _T( "ICMP.DLL" ) );
//注: _T()还需要加上头文件 < tchar.h >
错误说明2:
错误 LNK1104 无法打开文件“Source.def” GHookDll D:\c++\hook\GHookDll\GHookDll\LINK 1
需要把VSC 中的GHookDll 项目的属性下的 链接器--》输入中的Source.def 改为hook.def