强制鼠标弹起?

来源:百度知道 编辑:UC知道 时间:2024/05/26 08:00:54
是这样的。
我在编写一个游戏的辅助软件
因为游戏有装NP,所以在游戏开启的时候,软件对键盘和鼠标的操作都是无效的,知道NP原理的人应该很清楚。
但我要用到鼠标弹起这个动作
所以我想通过一个其他 事件的发生来迫使鼠标弹起而不是真的模拟鼠标弹起命令
有人有这样的经验么?比如无意运行什么东西会把鼠标按住的状态取消?
游戏要求要在恰当的时候放开鼠标

如果手控的话不能保证精确,软件就不一样了,这就是目的

都说了普通的函数都是不行的被NP封了

局部级的模拟方法:
用API函数sendMessage,把鼠标弹起命令的消息发给游戏窗口
以下是声明及弹起的常量:
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'下边是常量
Private Const WM_LBUTTONUP = &H202
'下边的hwnd变量要使用游戏窗口的句柄
sendmessage(hwnd,WM_LBUTTONUP,0,0)

全局级的模拟方法:
你会发现,用上面的方法模拟并不是对所有程序都有效的,有的程序啊,你向它发了一大堆消息,可是它却一点反应也没有。这是怎么回事呢? 这就要看具体的情况了,有些程序(特别是一些游戏)出于某些原因,会禁止用户对它使用模拟按键程序,这个怎么实现呢?比如可以在程序中检查一下,如果发现 自己不是活动窗口,就不接受消息。或者仔细检查一下收到的消息,你会发现真实的按键和模拟的按键消息总是有一些小差别,从这些小差别上,目标程序 就能判断出:这是假的!是伪造的!!因此,如果用sendMessage发送局部消息模拟不成功的话,你可以试一试全局级的消息,看看能不能骗过 目标程序。
使用API函数Mouse_event
'声明:
Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_LEFTUP = &H4
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)

你把鼠标弹起的最终目的是什么呢?补充一下,大家可以帮