有的游戏不支持mouse_event,要如何操作鼠标?

jvchuan7 2012-08-27 04:26:48
我想模拟鼠标操作,比如鼠标移动、左键按下或弹起,用mouse_event的话,有的游戏有效,而有的游戏却无效。

正常情况下,点击真实鼠标左键,游戏中的人物会移动到鼠标点击的位置。

而我用下面的代码操作鼠标

SetCursorPos(x,y);//将鼠标移动到(x,y)坐标
mouse_event( MOUSEEVENTF_LEFTDOWN, 0,0,0,NULL);//按下鼠标左键
Slepp(100);
mouse_event( MOUSEEVENTF_LEFTUP, 0,0,0,NULL);//弹起鼠标左键

只看到鼠标移动到了(x,y)坐标,人物却没有移动,说明SetCursorPos有效,而mouse_event无效。

有人说不支持mouse_event的游戏都是用的DirectInput技术。我没接触过DirectInput,我只想知道,怎样才能在游戏中模拟鼠标点击?
...全文
583 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gloveing 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:
游戏这样做,就是为了防止那些想做外挂的, 按键挂是最初级的,好的游戏都是对鼠标键盘做了处理的.
首先是 鼠标键盘消息WM_开头的那些, 然后是鼠标键盘虚拟事件,也就是你使用的mouse_event这类的.
DirectInput是属于驱动级的了, 直接从硬件接口读取鼠标键盘信号, 这样ring3应用层就无法做模拟按键了.

对于这种,你只有做驱动级的模拟了.

……
[/Quote]
SendInput,但是和mouse_event一样,会受到游戏程序的处理,一样没效
jvchuan7 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
游戏这样做,就是为了防止那些想做外挂的, 按键挂是最初级的,好的游戏都是对鼠标键盘做了处理的.
首先是 鼠标键盘消息WM_开头的那些, 然后是鼠标键盘虚拟事件,也就是你使用的mouse_event这类的.
DirectInput是属于驱动级的了, 直接从硬件接口读取鼠标键盘信号, 这样ring3应用层就无法做模拟按键了.

对于这种,你只有做驱动级的模拟了.
[/Quote]
除了mouse_event,还有什么可以操作鼠标的函数吗?
Gloveing 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
游戏这样做,就是为了防止那些想做外挂的, 按键挂是最初级的,好的游戏都是对鼠标键盘做了处理的.
首先是 鼠标键盘消息WM_开头的那些, 然后是鼠标键盘虚拟事件,也就是你使用的mouse_event这类的.
DirectInput是属于驱动级的了, 直接从硬件接口读取鼠标键盘信号, 这样ring3应用层就无法做模拟按键了.

对于这种,你只有做驱动级的模拟了.
[/Quote]
++
对那些保护自身的游戏,ring3下要做不容易。。。
xiaohuh421 2012-08-27
  • 打赏
  • 举报
回复
游戏这样做,就是为了防止那些想做外挂的, 按键挂是最初级的,好的游戏都是对鼠标键盘做了处理的.
首先是 鼠标键盘消息WM_开头的那些, 然后是鼠标键盘虚拟事件,也就是你使用的mouse_event这类的.
DirectInput是属于驱动级的了, 直接从硬件接口读取鼠标键盘信号, 这样ring3应用层就无法做模拟按键了.

对于这种,你只有做驱动级的模拟了.

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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