首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vb中用sendmessage模拟鼠标的有关问题

2012-12-19 
vb中用sendmessage模拟鼠标的问题代码如下:SendMessage hwnd, WM_LBUTTONDOWN, 1, &HC00239SendMessage hw

vb中用sendmessage模拟鼠标的问题
代码如下:
SendMessage hwnd, WM_LBUTTONDOWN, 1, &HC00239
SendMessage hwnd, WM_LBUTTONUP, 0, &HC00239

可是在窗口里没有按你指定的坐标点击,而是鼠标在哪里在哪里点击不知道是什么原因啊。

用spy++测试了下,坐标是正确的啊。

但是有区别,这段是模拟的。
<00072> 00620674 S WM_LBUTTONDOWN fwKeys:MK_LBUTTON xPos:569 yPos:192
<00073> 00620674 R WM_LBUTTONDOWN
<00074> 00620674 S WM_LBUTTONUP fwKeys:0000 xPos:569 yPos:192
<00075> 00620674 S WM_LBUTTONUP

这段是直接点击窗口里得到的
<00069> 00620674 P WM_LBUTTONDOWN fwKeys:MK_LBUTTON xPos:569 yPos:192
<00070> 00620674 P WM_LBUTTONUP fwKeys:0000 xPos:569 yPos:192

就是模拟的比正常点击的多了那么两行。而且不能在传递的值处点击鼠标,而是鼠标在哪里就点击。

简单的说就是模拟的时候传递的坐标没有作用。

谁能帮我解答下啊,谢谢了。

[解决办法]
1.使用API GetWindowRect 可以得知目标的XY与大小
2.模拟鼠标 建议你使用mouse_event 

Private Type RECT 
  Left  As Long 
  Top  As Long 
  Right  As Long 
  Bottom  As Long 
End Type 
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long 

Private Sub Command1_Click() 
  Dim Rec As RECT 
  GetWindowRect HwndVal, Rec 
  SetCursorPos Rec.Right - 40, Rec.Top + 15 
  mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 
End Sub
[解决办法]
不能用mouse_event 啊,因为我要在敞口最小化的时候照样可以模拟啊。
mouse_event 好像是全局的吧,要不然就要再开个虚拟机啦。
[解决办法]
呵呵....那是不是思路改一下 If 最小化 Then 改为模拟键盘, 两者并用 ?

因为在 最小化时 模拟鼠标 没正确的座标让你 "点击" 啊
[解决办法]
我的坐标都是可以算出来的,所以就可以最小化时候用啊。
感觉不用判断了吧,sendmessage比mouse_event点吧~
就是做起来有点困难~
[解决办法]
呵呵...是有点麻烦

这个帖与你差不多,参考看吧

http://topic.csdn.net/u/20100128/23/5cbd3947-fc92-434b-868b-103e4576578b.html?41923




[解决办法]
只能在研究下了,哎~
[解决办法]
先用SetCursorPos 移动鼠标到要点击的位置,再点击

[解决办法]

引用:
先用SetCursorPos 移动鼠标到要点击的位置,再点击


那最小化了还是不能用啊~
[解决办法]
关于那个点击的问题已经可以了,但是只是点击,坐标没有用,还是在坐标的地方点击,不知道是怎么回事啊
[解决办法]
自己搞定了,结贴了
[解决办法]
你咋搞定的啊!!!教教我!!!我也遇到这个问题!!!
加QQ 157929881 一起研究啊!!!
[解决办法]
你搞定了,把答案发一下啊

热点排行