为什么postmessage发送的鼠标移动消息不能精确定位?(50分)不够再加(50分)

  • 主题发起人 主题发起人 16cy
  • 开始时间 开始时间
1

16cy

Unregistered / Unconfirmed
GUEST, unregistred user!
我用postmessage发送命令到其他程序来操纵鼠标,可是发现每次鼠标都不能够精确定位,而是只在指定的位置附近变化。<br><br>比如我要把鼠标移动到100,100这个位置,可是每次他都不能精确点到100,100,而是只在<br>100,100这个位置附近,而且好象是随机的。<br><br>百思不得其解,请问有高手能解决这个问题吗?<br><br>先给50分,如果解决了问题再送50
 
应该是设备坐标系和逻辑坐标系的问题吧 <br><br>Delphi编程中设备坐标系和逻辑坐标系的转换 <br> &nbsp; &nbsp;很多熟悉Delphi IDE编程的人对设备坐标系和逻辑坐标系的概念可能不是很清晰,对他们的作用更为模糊。熟悉Windows SDK的程序员对这两种坐标系应该比较清楚。<br> &nbsp; &nbsp;设备坐标系是指Win32运行于的设备。它以像素为单位进行度量,定位方向是水平轴从左到右、垂直轴从上到下增加。例如,如果在1024*768的显示器上运行Windows,设备左上角坐标为(0,0),而右下角坐标为(1023,767)。屏幕坐标系是指显示设备,因此它是以像素为度量单位的坐标系,在1024*768的显示器上,Screen.Width和Screen.Height分别为1024和768像素。<br> &nbsp; &nbsp;我们通过Canvas对象绘制图形的时候,通过GetDC获得屏幕的设备环境,使用的是逻辑坐标系。而实际上在后台调用的还是设备坐标系,这通过映射的方式来解决。Canvas的实质是设备环境的外套。
 
postmessage来操纵鼠标应该是逻辑坐标系,这个我不管<br>我问的是: 为什么每次移动鼠标都不能够精确到所指定的位置,而是一个不固定的,当然不会偏移很多,却也足够导致点击错误了.
 
屏幕和窗体的坐标不是一回事,你的坐标可能没有换算过
 
换算过的,是窗体里的相对坐标,不是绝对坐标
 
你是不是POSTMESSAGE到游戏窗口里面?如果是这样的话那很正常。
 
to Turbo Delphi: 是的,你说很正常是什么意思?
 
你用的是相对坐标还是绝对坐标?
 
to:zgwxldw<br>是相对坐标,就是游戏窗口里的坐标,与显示器屏幕坐标无关的
 
to 16cy<br>&quot;比如我要把鼠标移动到100,100这个位置,可是每次他都不能精确点到100,100,而是只在<br>100,100这个位置附近,而且好象是随机的。&quot;<br>可以詳細解釋一下這句說話嗎?<br>你是如何得知鼠标在(100,100)附近?<br>因為我想你可以做多了一點東西...或者是對相对坐标还是绝对坐标的理解有點誤會
 
游戏里的DX窗体和普通的WINDOWS窗体不一样。
 
你的情况是不是有时候会偏差-5 有时候又是+10这样的偏移?<br>这是游戏里的防外挂机制,每次运行游戏的时候都会随机生成个坐标偏移量.<br>建议你看看大话西游II开发小组 风云写的游戏机制,应该会对你有帮助.<br>以前想写外挂的,谁知道简单的功能实现起来复杂的要死.后来想写盗号木马,<br>它的安全性也不差,我试过HOOK键盘,HOOK不到,开始以为是被游戏先HOOK了API了,防止了HOOK,又试了远程线程注入再HOOK 也不行,注册系统热键来监视键盘,都被游戏程序发现.<br>不过用实施监视键盘的状态倒是可行.
 
to Turbo Delphi:<br>是你说的那种状态,经常会有偏差<br><br>不知道论坛里有没有人知道如何解决的啊????
 
to nickmatch99:<br>就是有时候会偏差-5 有时候又是+10,或-3,+4等的偏差
 
用SendMessage试试<br>PostMessage在消息没有被处理以前就返回了<br>这中间可能存在误差
 
我用了sendmessage也是一样的
 
你说的位置有偏差,那我想问一下,这个偏差是一个固定值还是一个非固定值,如果是固定值的话,有可能是上面朋友说的那种问题
 
是一个非固定值,如果是固定值就好了,那我就有办法了
 
移动坐标干什么?有这种需要吗?
 
给16cy一个方法,多次移动,尽量毕竟这个你需要的位置即可了。移动一次鼠标之后,先获取当前鼠标的坐标位置,然后和你的目的坐标位置做比较,看是不是满足了你的误差要求,如果不满足,继续移动,直到满足为止。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部