关于mouse_event 鼠标定位的问题
发表在VB答疑区
2008-03-31
是否精华
是
否
版块置顶:
是
否
<P>mouse_event </P>
<P>VB声明 <BR>Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) <BR>说明 <BR>模拟一次鼠标事件 <BR>参数表 <BR>参数 类型及说明 <BR>dwFlags Long,下述标志的一个组合 <BR>MOUSEEVENTF_ABSOLUTE dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元 <BR>MOUSEEVENTF_MOVE 移动鼠标 <BR>MOUSEEVENTF_LEFTDOWN 模拟鼠标左键按下 <BR>MOUSEEVENTF_LEFTUP 模拟鼠标左键抬起 <BR>MOUSEEVENTF_RIGHTDOWN 模拟鼠标右键按下 <BR>MOUSEEVENTF_RIGHTUP 模拟鼠标右键按下 <BR>MOUSEEVENTF_MIDDLEDOWN 模拟鼠标中键按下 <BR>MOUSEEVENTF_MIDDLEUP 模拟鼠标中键按下 <BR>dx Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动 <BR>dy Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动 <BR>cButtons Long,未使用 <BR>dwExtraInfo Long,通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序 <BR>注解 <BR>进行相对运动的时候,由SystemParametersInfo函数规定的系统鼠标轨迹速度会应用于鼠标运行的速度<BR> </P>
<P>mouse_event不仅用于当前窗口,整个屏幕都有效,而且我试了很多次了,始终无法脱离鼠标,单击的地方总是鼠标所在点,即使设置了绝对位置也一样,我要的是鼠标在屏幕里的位置与单击的位置不在同个点上。我给出我的代码,帮我看下是不是哪里有问题,感觉好像是设置绝对位置比起作用。<BR>Option Explicit<BR>Private Declare Sub mouse_event Lib "user32" _<BR>( _<BR>ByVal dwFlags As Long, _<BR>ByVal dx As Long, _<BR>ByVal dy As Long, _<BR>ByVal cButtons As Long, _<BR>ByVal dwExtraInfo As Long _<BR>)</P>
<P>Const MOUSEEVENTF_LEFTDOWN = &H2<BR>Const MOUSEEVENTF_LEFTUP = &H4<BR>Const MOUSEEVENTF_MIDDLEDOWN = &H20<BR>Const MOUSEEVENTF_MIDDLEUP = &H40<BR>Const MOUSEEVENTF_MOVE = &H1<BR>Const MOUSEEVENTF_ABSOLUTE = &H8000<BR>Const MOUSEEVENTF_RIGHTDOWN = &H8<BR>Const MOUSEEVENTF_RIGHTUP = &H10</P>
<P>Private Sub Form_Load()<BR>Timer1.Interval = 1000<BR>Timer1.Enabled = True<BR>End Sub</P>
<P>'每隔一秒中模拟一次鼠标事件<BR>Private Sub Timer1_Timer()<BR>mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 100, 100, 0, 0<BR>End Sub<BR>不管有没加MOUSEEVENTF_ABSOLUTE,后边的参数怎么改,单击的位置始终还是屏幕鼠标所在位置,请主人过过目。</P>
<P>VB声明 <BR>Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) <BR>说明 <BR>模拟一次鼠标事件 <BR>参数表 <BR>参数 类型及说明 <BR>dwFlags Long,下述标志的一个组合 <BR>MOUSEEVENTF_ABSOLUTE dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元 <BR>MOUSEEVENTF_MOVE 移动鼠标 <BR>MOUSEEVENTF_LEFTDOWN 模拟鼠标左键按下 <BR>MOUSEEVENTF_LEFTUP 模拟鼠标左键抬起 <BR>MOUSEEVENTF_RIGHTDOWN 模拟鼠标右键按下 <BR>MOUSEEVENTF_RIGHTUP 模拟鼠标右键按下 <BR>MOUSEEVENTF_MIDDLEDOWN 模拟鼠标中键按下 <BR>MOUSEEVENTF_MIDDLEUP 模拟鼠标中键按下 <BR>dx Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动 <BR>dy Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动 <BR>cButtons Long,未使用 <BR>dwExtraInfo Long,通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序 <BR>注解 <BR>进行相对运动的时候,由SystemParametersInfo函数规定的系统鼠标轨迹速度会应用于鼠标运行的速度<BR> </P>
<P>mouse_event不仅用于当前窗口,整个屏幕都有效,而且我试了很多次了,始终无法脱离鼠标,单击的地方总是鼠标所在点,即使设置了绝对位置也一样,我要的是鼠标在屏幕里的位置与单击的位置不在同个点上。我给出我的代码,帮我看下是不是哪里有问题,感觉好像是设置绝对位置比起作用。<BR>Option Explicit<BR>Private Declare Sub mouse_event Lib "user32" _<BR>( _<BR>ByVal dwFlags As Long, _<BR>ByVal dx As Long, _<BR>ByVal dy As Long, _<BR>ByVal cButtons As Long, _<BR>ByVal dwExtraInfo As Long _<BR>)</P>
<P>Const MOUSEEVENTF_LEFTDOWN = &H2<BR>Const MOUSEEVENTF_LEFTUP = &H4<BR>Const MOUSEEVENTF_MIDDLEDOWN = &H20<BR>Const MOUSEEVENTF_MIDDLEUP = &H40<BR>Const MOUSEEVENTF_MOVE = &H1<BR>Const MOUSEEVENTF_ABSOLUTE = &H8000<BR>Const MOUSEEVENTF_RIGHTDOWN = &H8<BR>Const MOUSEEVENTF_RIGHTUP = &H10</P>
<P>Private Sub Form_Load()<BR>Timer1.Interval = 1000<BR>Timer1.Enabled = True<BR>End Sub</P>
<P>'每隔一秒中模拟一次鼠标事件<BR>Private Sub Timer1_Timer()<BR>mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 100, 100, 0, 0<BR>End Sub<BR>不管有没加MOUSEEVENTF_ABSOLUTE,后边的参数怎么改,单击的位置始终还是屏幕鼠标所在位置,请主人过过目。</P>