读书人

全局钩子为什么不起作用?该怎么处理

发布时间: 2012-05-29 12:16:00 作者: rapoo

全局钩子为什么不起作用?
DLL函数:
#include <objbase.h>
#include <windows.h>

#include <iostream>

using namespace std;
#pragma data_seg("SHARE")
int stat=0;
HHOOK hkey=NULL;
HINSTANCE hwd;

class __declspec(dllexport) Monitor{

public:
void setstat(void);
void FuncInDll(void);
void show(void);
};
void Monitor::show()
{
MessageBox(NULL,TEXT("text"),TEXT("title"),0);
}
void Monitor::setstat(void)
{
stat=1;
}
LRESULT CALLBACK hookproc(int nCode,WPARAM wParam,LPARAM lParam)
{

if(stat==1)
{
CallNextHookEx(hkey,nCode,wParam, lParam);
}
UnhookWindowsHookEx(hkey);
return 1;
}

void Monitor::FuncInDll()

{

MessageBox(NULL,TEXT("text2"),TEXT("title3"),0);
hkey=SetWindowsHookEx(WH_CBT,
hookproc,
hwd,
0
);
MessageBox(NULL,TEXT("text3"),TEXT("title3"),0);

}

BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved)

{

HANDLE g_hModule;
hwd=(HINSTANCE)hModule;

switch(dwReason)

{

case DLL_PROCESS_ATTACH:

g_hModule = (HINSTANCE)hModule;

break;

case DLL_PROCESS_DETACH:

g_hModule=NULL;

break;

}

return TRUE;

}

按钮中,给某一个按钮注册监听程序,这个按钮想实现全局钩子
void CtestDlg::OnBnClickedOk()
{
m.show();
m.FuncInDll();
}
这个FuncInDll()没起作用啊。。。跪求大神解答。。


[解决办法]
《VC++深入详解》有说勾子的章节,你看一看是怎么实现的。
http://club.topsage.com/thread-185201-1-1.html

读书人网 >VC/MFC

热点推荐