关于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>

 
	
                                                 VIP会员
VIP会员 购物车
购物车

 私信
                         私信 
                     发表新帖
发表新帖 立即签到
立即签到 
        		  
        		 
         		 关注
关注
                  回复
 回复 支持(
                	支持( 反对(
                    反对( 
                







 
                     
                     
					 
						 
						 
						 
						