有谁在win7下做过全局的键盘钩子吗? 为什么我建立的动态链接库被加载后按下任何键调用的进程立马破溃

代码在这里:#pragmadata_seg("hookdata")HHOOKoldHook=0;#pragmadata_seg()#pragmacomment(linke... 代码在这里:

#pragma data_seg("hookdata")
HHOOK oldHook = 0;
#pragma data_seg()

#pragma comment(linker,"/SECTION:hookdata,RWS")

HINSTANCE hInst;

BOOL WINAPI DllMain( HINSTANCE hInstance,
ULONG ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
hInst = hInstance;
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

void InstallHook()
{
//SetPrivileges(TRUE);
oldHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyBoardProc, hInst, 0);
if (!oldHook)
{
MessageBox(NULL, TEXT("Fail to Set Hook"), NULL, MB_OK);
}
else
MessageBox(NULL, TEXT("Success to Set Hook"), NULL, MB_OK);
}

LRESULT CALLBACK KeyBoardProc(int nCode, WPARAM wParam, LPARAM, LPARAM lParam)
{
return CallNextHookEx(oldHook, nCode, wParam, lParam);
}

void EndHook(void)
{
UnhookWindowsHookEx(oldHook);
}
忘记说了 环境是win7 32位的
展开
 我来答
linux001
2013-03-29 · TA获得超过1401个赞
知道大有可为答主
回答量:1665
采纳率:100%
帮助的人:1342万
展开全部
你是怎么用调用 这个DLL的?
希望你不是在控制台来调用 的。。。
我刚试了下,没发现什么问题。改成了动态调用。非静态链接...
逍遥足球子
2013-03-21 · TA获得超过344个赞
知道答主
回答量:236
采纳率:0%
帮助的人:101万
展开全部
这个孙鑫视频里有讲解,你可以去查查,这一段的代码我忘记了。
更多追问追答
追问
正在看哈 看完再说
追答
追为最佳答案吧,兄弟。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贼眼佛心
2013-08-21
知道答主
回答量:1
采纳率:0%
帮助的人:1448
展开全部
你的问题解决了吗?请告之,多谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式