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()没起作用啊跪求大神解答。。
#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()没起作用啊跪求大神解答。。
http://club.topsage.com/thread-185201-1-1.html