3个回答
展开全部
当然可以啊。
使用API函数mouse_event可以模拟鼠标事件,比如左键单击、双击和右键单击等。这个实例利用此函数产生了十分有趣的效果,无论鼠标处于屏幕的任何位置,每隔一秒程序会使鼠标在那个位置单击或双击一次,这会给我们造成什么样的混乱呢?试一试就知道了。
先在程序中加入如下的声明后,就能引用mouse_event函数:
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)
其中各个参数的意义如下表所示:
参数 意义
dwFlags Long,下表中标志之一或它们的组合
dx,dy Long,根据MOUSEEVENTF_ABSOLUTE标志,指定x,y方向的绝对位置或相对位置
cButtons Long,没有使用
dwExtraInfo Long,没有使用
dwFlags常数 意义
MOUSEEVENTF_MOVE &H1,移动鼠标
MOUSEEVENTF_LEFTDOWN &H2,模拟鼠标左键按下
MOUSEEVENTF_LEFTUP &H4,模拟鼠标左键抬起
MOUSEEVENTF_RIGHTDOWN &H8,模拟鼠标右键按下
MOUSEEVENTF_RIGHTUP &H10,模拟鼠标右键抬起
MOUSEEVENTF_MIDDLEDOWN &H20,模拟鼠标中键按下
MOUSEEVENTF_MIDDLEUP &H40,模拟鼠标中键抬起
MOUSEEVENTF_ABSOLUTE &H8000,标示是否采用绝对坐标
程序中我们这样使用mouse_event函数:
1、这里是鼠标左键按下和松开两个事件的组合即一次单击:
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
2、模拟鼠标右键单击事件:
mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
3、两次连续的鼠标左键单击事件 构成一次鼠标双击事件:
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
如上面所示如果我们要使用两个dwFlags常数的组合时,可以用Or将其连接起来。本例中我们把dx,dy参数都设为0,是指每次模拟事件的位置是鼠标的当前位置,dx,dy在没有使用MOUSEEVENTF_ABSOLUTE标志时是相对于鼠标当前位置的坐标,如果设置为使用绝对坐标,则dx,dy是相对于屏幕的坐标。
然后把这些语句放在Timer控件的Timer事件中,就能实现每一定间隔模拟一次鼠标事件了。
说明:我不是很会VC,所以只给出VB里面调用得方法。抱歉。
使用API函数mouse_event可以模拟鼠标事件,比如左键单击、双击和右键单击等。这个实例利用此函数产生了十分有趣的效果,无论鼠标处于屏幕的任何位置,每隔一秒程序会使鼠标在那个位置单击或双击一次,这会给我们造成什么样的混乱呢?试一试就知道了。
先在程序中加入如下的声明后,就能引用mouse_event函数:
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)
其中各个参数的意义如下表所示:
参数 意义
dwFlags Long,下表中标志之一或它们的组合
dx,dy Long,根据MOUSEEVENTF_ABSOLUTE标志,指定x,y方向的绝对位置或相对位置
cButtons Long,没有使用
dwExtraInfo Long,没有使用
dwFlags常数 意义
MOUSEEVENTF_MOVE &H1,移动鼠标
MOUSEEVENTF_LEFTDOWN &H2,模拟鼠标左键按下
MOUSEEVENTF_LEFTUP &H4,模拟鼠标左键抬起
MOUSEEVENTF_RIGHTDOWN &H8,模拟鼠标右键按下
MOUSEEVENTF_RIGHTUP &H10,模拟鼠标右键抬起
MOUSEEVENTF_MIDDLEDOWN &H20,模拟鼠标中键按下
MOUSEEVENTF_MIDDLEUP &H40,模拟鼠标中键抬起
MOUSEEVENTF_ABSOLUTE &H8000,标示是否采用绝对坐标
程序中我们这样使用mouse_event函数:
1、这里是鼠标左键按下和松开两个事件的组合即一次单击:
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
2、模拟鼠标右键单击事件:
mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
3、两次连续的鼠标左键单击事件 构成一次鼠标双击事件:
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
如上面所示如果我们要使用两个dwFlags常数的组合时,可以用Or将其连接起来。本例中我们把dx,dy参数都设为0,是指每次模拟事件的位置是鼠标的当前位置,dx,dy在没有使用MOUSEEVENTF_ABSOLUTE标志时是相对于鼠标当前位置的坐标,如果设置为使用绝对坐标,则dx,dy是相对于屏幕的坐标。
然后把这些语句放在Timer控件的Timer事件中,就能实现每一定间隔模拟一次鼠标事件了。
说明:我不是很会VC,所以只给出VB里面调用得方法。抱歉。
展开全部
可以用mouse_event API函数来模拟鼠标在某个位置Click
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)
Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move
Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
Private Const MOUSEEVENTF_LEFTUP = &H4 ' left button up
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' middle button down
Private Const MOUSEEVENTF_MIDDLEUP = &H40 ' middle button up
Private Const MOUSEEVENTF_MOVE = &H1 ' mouse move
Private Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down
Private Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up
Private Sub MouseClick(x As Long, y As Long)
Dim SCR_W As Long
Dim SCR_H As Long
SCR_W = Screen.Width / 15
SCR_H = Screen.Height / 15
'移动鼠标
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_MOVE, Int(x / SCR_W * 65535), Int(y / SCR_H * 65535), 0, 0
'左键按下
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
DoEvents
'左键放开
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
DoEvents
End Sub
调用举例:
在1024*768下点击屏幕中央,在屏幕中央放一个点击以后会有效果的东西看看结果
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)
Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move
Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
Private Const MOUSEEVENTF_LEFTUP = &H4 ' left button up
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' middle button down
Private Const MOUSEEVENTF_MIDDLEUP = &H40 ' middle button up
Private Const MOUSEEVENTF_MOVE = &H1 ' mouse move
Private Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down
Private Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up
Private Sub MouseClick(x As Long, y As Long)
Dim SCR_W As Long
Dim SCR_H As Long
SCR_W = Screen.Width / 15
SCR_H = Screen.Height / 15
'移动鼠标
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_MOVE, Int(x / SCR_W * 65535), Int(y / SCR_H * 65535), 0, 0
'左键按下
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
DoEvents
'左键放开
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
DoEvents
End Sub
调用举例:
在1024*768下点击屏幕中央,在屏幕中央放一个点击以后会有效果的东西看看结果
参考资料: http://topic.csdn.net/t/20051223/14/4477414.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Form_DblClick()
Print "双击鼠标"
End Sub
Print "双击鼠标"
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询