对单机游戏做HOOK时要到了问题

木黑神 2019-10-06 08:51:55
WIN32。
软件启动设置一个计时器,
在计时器里面。放所有功能函数。
全局
Bool hook = True.

窗口过程。
case:wm-create:
settimer.
retuen 0.

case:wm-timer:
{
yxhwnd=findwindow.
if(yxhwnd)
{
if(hook)
{
setwindowshook.//创建HOOK
hook= false.
}
if(youxijinru) //游戏进入对局
{
所有功能函数。
}

}
else
{
hook=false.
Unhook//删除HOOK。
}
retuen 0.
}

DLL里面。
只对游戏下键盘钩子。
只截取F1-F12消息。

软件打开,F1-F12,都可以用。
等游戏玩一会了,F1-F12,按就没反应了。

我对设置HOOK,和删除HOOK,那里下断点。
启动时设置HOOK那里断下,HOOK成功。
游戏里面按F1-F12管用了。
玩一会游戏。
再按游戏里面F1-F12就不管用,
UnHook那里并没有断下来,
说明HOOK没有结束。
但是为什么又不管用了呢。
求大神指点。
...全文
192 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_32649141 2019-10-20
  • 打赏
  • 举报
回复
进来学习学习!!!!!!!
木黑神 2019-10-06
  • 打赏
  • 举报
回复
手机网页不好引用回复。
我也想知道,对于游戏,应该在哪里设置。
想了半天,除了计时器没想到别的。
我在计时器里面也设置判断了,并没有重复设置HOOK
zgl7903 2019-10-06
  • 打赏
  • 举报
回复
感觉逻辑不够严谨, 不要在定时器中反复Hook和UnHook操作 Hook是否成功需要判断
木黑神 2019-10-06
  • 打赏
  • 举报
回复
设创建HOOK和删除HOOK都是DLLL里面导出的函数
木黑神 2019-10-06
  • 打赏
  • 举报
回复
我明白了,谢谢
许文君 2019-10-06
  • 打赏
  • 举报
回复
如果是全局钩子 你是否还应对钩子是否已经失效做下判断?比如消息被截流等你的钩子不就失效了么

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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