16,471
社区成员
发帖
与我相关
我的任务
分享
#include <windows.h>
HHOOK g_hMouse;
HINSTANCE g_hInst;
BOOL WINAPI DllMain( HINSTANCE hModule,DWORD dwReason,LPVOID lpvReserved )
{
g_hInst=hModule; //dll被加载时会传递一个该模块的句柄hModule
}
LRESULT CALLBACK MouseProc( //鼠标钩子过程
int nCode,
WPARAM wParam,
LPARAM lParam
)
{
return 1; //返回非0值表示已经处理,无须向下传递了。
}
void SetHook()
{
g_hMouse = ::SetWindowsHookEx(WH_MOUSE,MouseProc,g_hInst,0);//最后个参数0表示此钩子过程与运行在同一桌面下的所有线程相关了,即全局钩子。
}
LIBRARY "Hook"
EXPORTS
SetHook
#include "stdafx.h"
#include "HookTest.h"
#include "HookTestDlg.h"
#pragma comment(lib, "..\\Release\\Hook.lib") //链接引入库文件
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
......
_declspec(dllimport) void SetHook(); //函数声明,_declspec(dllimport)表示来自外部dll文件
BOOL CHookTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
// TODO: 在此添加额外的初始化代码
SetHook(); //调用dll中的函数。 编译没问题, 为什么运行到这里就失败了呢?弹出一个框,提示:应用程序初始化(0xc0000142)失败。
return TRUE;
}