要想在屏幕的指定的绝对位置有点击事件,比如(100,100)处,必须加MOOSE_EVENTF_ABSOLOTE 参数。即:mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP or MOOSE_EVENTF_ABSOLOTE , 100&, 100&, cButt, dwEI还在在原处点击,不在(100,100)处,是不是还有别的什么没有设置
谢谢大家了
谢谢大家了
老大,我拜托你看清楚我给你的有关mouse_event 的文档,其中有一句:“如果指定了MOWSEEVENTF_ABSOLOTE值,则dX和dy含有标准化的绝对坐标,其值在0到65535之间。事件程序将此坐标映射到显示表面。坐标(0,0)映射到显示表面的左上角,(6553,65535)映射到右下角。” 也就是说,(100,100)与鼠标原在点的间距极小,所以你根本没分辨出鼠标的点击事件是在那里发生的!要想有明显的,你要换个大点的值!!!!!
另外,为什么不给分???
改为如下试一下:
mouse_event MOUSEEVENTF_LEFTDOWN or MOOSE_EVENTF_ABSOLOTE , 100&*DxScale, 100&*DyScale, cButt, dwEI
老兄呀
我真的没有成功过,
你在自己的机器上试试,我不骗你,那个确定绝对位置一点用也没有
那么mouse_event(...,100*65535/1024,100*65535/768,...)绝对可以!我主页上的程序就是这样写的,一点问题没有。http://nowcan.yeah.net
我不知道你是怎么用的,我来告诉你吧!
新建一个工程,在窗体上放一个CommandButton,然后把下面的代码拷入,运行。不要用鼠标点CommandButton,按“回车键”,就看到效果拉。把鼠标放到不同的地方试试。
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 = &H10Private Sub Command1_Click()
'Simulate a mouseclick on the cursor's position
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 100 * 65535 / 1024, 100 * 65535 / 768, 0&, dwEI
End Sub
Private Sub Form_Load()
Me.Move 0, 0, Screen.Width, Screen.Height
End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) MsgBox "X:" & CStr(X) & " Y:" & CStr(Y)
End Sub
8163852