office 插件 钩子消息失效 win64

jiu6332356 2016-11-28 02:38:15
LRESULT CALLBACK LowLevelKeyboardProc (INT nCode, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *)lParam;
BOOL bControlKeyDown = 0;
switch (nCode)
{
case HC_ACTION:
{
if (GetAsyncKeyState(VK_CONTROL) & 0x8000)
{
if (pkbhs->vkCode=='S' )
{
HWND hwFocus = GetFocus();
//AfxMessageBox(_T("d111111111d"));
if (hwFocus != NULL)
{
AfxMessageBox("ctrl+s");
}
}
}
break;
}

default:
break;
}
return CallNextHookEx(m_Hook, nCode, wParam, lParam );;

}


初始化
m_Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc, NULL,0);


这是我写的监控键盘ctrl+s的事件 office2010的word没有问题!!!
但到了office2013 64位的时候失效了 就是如果焦点在word文档上消息不会进到函数里面; 但如果焦点不在word上 消息就会进到函数里面;同时做的还有一个工具条按钮和ctrl+s功能一样 工具调按钮可以正常执行 但这个监控函数消息进不去


求解惑!!!!谢谢
...全文
529 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-12-01
  • 打赏
  • 举报
回复
参考http://www.autohotkey.com源代码相关片断?
jiu6332356 2016-12-01
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
提醒:ctrl+s是暂停console输出的系统保留热键。
但是我焦点在 word上 也没开console 应该跟这个没啥关系吧
赵4老师 2016-11-30
  • 打赏
  • 举报
回复
提醒:ctrl+s是暂停console输出的系统保留热键。
jiu6332356 2016-11-29
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
[quote=引用 2 楼 jiu6332356 的回复:] [quote=引用 1 楼 zhao4zhong1 的回复:] 搜“hook 64位”
我用的就是64位环境编译的 工具条按钮就能响应 就是监控键盘消息时没响应[/quote] 权限问题? 检查每个函数调用的返回值。[/quote] m_Hook 返回非空 用管理员运行的啊 我试了下用WH_KEYBOARD 可以进到消息函数 但不能监控到ctrl+s 而且一调试就进不去消息函数了
赵4老师 2016-11-29
  • 打赏
  • 举报
回复
引用 2 楼 jiu6332356 的回复:
[quote=引用 1 楼 zhao4zhong1 的回复:] 搜“hook 64位”
我用的就是64位环境编译的 工具条按钮就能响应 就是监控键盘消息时没响应[/quote] 权限问题? 检查每个函数调用的返回值。
jiu6332356 2016-11-28
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
搜“hook 64位”
我用的就是64位环境编译的 工具条按钮就能响应 就是监控键盘消息时没响应
赵4老师 2016-11-28
  • 打赏
  • 举报
回复
搜“hook 64位”

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧