首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-05-29 
全局钩子为什么不起作用?DLL函数:#include objbase.h#include windows.h#include iostreamusing nam

全局钩子为什么不起作用?
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

热点排行