您的位置:程序门 -> vb ->



模拟鼠标点击


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


模拟鼠标点击[已结贴,结贴人:jinder]
发表于:2007-07-18 16:02:15 楼主
怎样做到让屏幕上的鼠标不动(真正意义上的不动),保持在(x1,y1),然后在(x2,y2)处模拟一次鼠标点击事件呢(外部程序)。
发表于:2007-07-18 17:49:441楼 得分:0
那就要向系统的消息队列里插入鼠标事件了

使用sendinput吧.
发表于:2007-07-18 17:51:382楼 得分:90
http://www.m5home.com/bbs/dispbbs.asp?boardid=2&id=1283&page=1

这里后面有讲到驱动级模拟的

驱动的代码也有,你看看吧
发表于:2007-07-19 17:16:493楼 得分:10
如果是指定窗口则sendmessage,postmessage都可以
如果是当前窗口mouse_event就可以了
发表于:2007-07-19 17:47:174楼 得分:0
那就要向系统的消息队列里插入鼠标事件了

使用sendinput吧.
---------------------------------------
能再详细点吗?


http://www.m5home.com/bbs/dispbbs.asp?boardid=2&id=1283&page=1

这里后面有讲到驱动级模拟的

驱动的代码也有,你看看吧
----------------------------------------
虽然是说键盘方面与问题相关不大,不过很值得一看,收藏了。


如果是指定窗口则sendmessage,postmessage都可以
如果是当前窗口mouse_event就可以了
----------------------------------------
mouse_event不仅用于当前窗口,整个屏幕都有效,而且我试了很多次了,始终无法脱离鼠标,单击的地方总是鼠标所在点,即使设置了绝对位置也一样,我要的是鼠标在屏幕里的位置与单击的位置不在同个点上。我给出我的代码,帮我看下是不是哪里有问题,感觉好像是设置绝对位置比起作用。
option   explicit
        private   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   _
        )

const   mouseeventf_leftdown   =   &h2
const   mouseeventf_leftup   =   &h4
const   mouseeventf_middledown   =   &h20
const   mouseeventf_middleup   =   &h40
const   mouseeventf_move   =   &h1
const   mouseeventf_absolute   =   &h8000
const   mouseeventf_rightdown   =   &h8
const   mouseeventf_rightup   =   &h10

private   sub   form_load()
timer1.interval   =   1000
timer1.enabled   =   true
end   sub

'每隔一秒中模拟一次鼠标事件
private   sub   timer1_timer()
        mouse_event   mouseeventf_absolute   or   mouseeventf_leftdown   or   mouseeventf_leftup,   100,   100,   0,   0
end   sub
不管有没加mouseeventf_absolute,后边的参数怎么改,单击的位置始终还是屏幕鼠标所在位置,请高手过过目。
发表于:2007-07-20 00:12:025楼 得分:0
虽然是说键盘方面与问题相关不大,不过很值得一看,收藏了。

//

后面有说到鼠标的模拟.

另外,自己写一写sendinput的鼠标包试一下

我之前试过在cs中自动开枪,星际中自动输 "show   me   the   money "十次,都是用那个驱动完成的

sendinput在3d程序里面好象并不好使....貌似这类游戏取得鼠标键盘的方式是另一套机制,比如directinput...

不过你是在桌面,那就用sendinput吧.
发表于:2007-07-20 03:07:046楼 得分:0
星际中自动输 "show   me   the   money "十次

老马好贪心啊
发表于:2007-07-20 04:30:197楼 得分:0
该回复于2007-12-28 17:47:49被管理员或版主删除
发表于:2007-07-20 09:00:238楼 得分:0
学习
发表于:2007-07-20 12:27:169楼 得分:0
老马好贪心啊

//

哈哈哈哈哈哈

没办法,我星际超菜啊~~~钱用得差不多了就输口令...可是麻烦,我就弄了个ctrl   +   f12,按一次就十次,哈哈
发表于:2007-07-20 14:19:1210楼 得分:0
直接power   overwhelming     不方便点?     挖哈哈
发表于:2007-07-20 22:02:1411楼 得分:0
呵呵,我玩的时候是强迫自己不作弊的,感觉这样打赢了比较爽。

谢谢咯,我再研究看看,那天看了那个键盘驱动的知识后我也想过鼠标是不是也可以这样,不过也只是想过去而已,没认真去研究。
多给点东西,我好少走点弯路嘛,别一句一句的,你那个cs中自动开枪的听起来感觉不错,说一下你那套思路行吗。
发表于:2007-07-21 02:07:5612楼 得分:0
你那个cs中自动开枪的听起来感觉不错

//

其实就是一个自动压枪,呵呵

我用hook拦截鼠标,然后检测

如果按下时间高于0.2-0.4秒,就认为是在连发

于是就自动向下修正枪口

我大概地录了m4,ak,aug,sig552这四种枪的弹道,然后反向计算得到修正值,使用ctrl   +   f1到f4就可以切换了

不过最终效果很不理想,呵呵

因为在运动中开枪时的弹道与静止时又是不同

后来就懒得搞了~~~~反正好久都没时间玩cs了
发表于:2007-07-21 10:08:3113楼 得分:0
哇,,,厉害啊,连弹道这方面都给你想到了,还真是服了你,要是让你搞出来了不天下无敌了,哈哈。
发表于:2007-07-21 10:49:2314楼 得分:0
玩星际我也就用用地图全开
发表于:2007-07-23 00:34:3415楼 得分:0
我还用   operation   cawl
发表于:2007-07-24 20:33:1416楼 得分:0
暂时先这样吧,有进展再开新帖。
发表于:2007-07-24 21:08:2917楼 得分:0
老马兄

刚才搜到一篇“如何把一个exe注册成系统服务?”,我也想知道这方面的知识。
“可能是一个普通的exe吧?要自己写一套服务消息处理代码的....”能再说详细点吗,如何弄才能做出一个能服务里运行起来的exe?
还有就是做好这个特殊的exe后如何将其变为系统服务?
似乎你有源码哦,可以的话发份给我,当然最好还是指导一下比较好,毕竟在一无所知的情况下去研究一份源码是很累人的事,呵呵,7286729@qq.com
先谢过了。


快速检索

最新资讯
热门点击