VB模拟鼠标点击
发布网友
发布时间:2022-04-21 17:48
我来回答
共5个回答
热心网友
时间:2022-05-13 01:49
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 = &H10
上面的是调用系统函数的声明,没什么可解释的,直接拷贝到文件最开始
这样就可以使用系统API函数mouse_event了(其他API可自己上网查,很多资料,如keybd_event)
第一个参数是描述了你鼠标干了什么,具体说明如下
MOUSEEVENTF_ABSOLUTE
dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元 - MOUSEEVENTF_MOVE
移动鼠标
MOUSEEVENTF_LEFTDOWN
模拟鼠标左键按下
MOUSEEVENTF_LEFTUP
模拟鼠标左键抬起
MOUSEEVENTF_RIGHTDOWN
模拟鼠标右键按下
MOUSEEVENTF_RIGHTUP
模拟鼠标右键按下
MOUSEEVENTF_MIDDLEDOWN
模拟鼠标中键按下
MOUSEEVENTF_MIDDLEUP
模拟鼠标中键按下
然后是X,Y坐标(第一项中使用了MOUSEEVENTF_ABSOLUTE为绝对坐标,否则为相对)
后面一个参数buttons没有用
最后一个是额外信息,特殊驱动用的,如果你做按键精灵类的东西没有用。
注意第一个参数是可以互相相与的 这样就是一次很多个效果,当然,分开两次写也可以,这样更清晰。
热心网友
时间:2022-05-13 03:07
提示一下,使用WinIo.dll,百度这个东西,以前用过,具体忘记了。代码比较麻烦,但是属于底层驱动级模拟操作,包括按键、鼠标
热心网友
时间:2022-05-13 04:42
如果程序是自适应分辨率的话应该按比例计算就可以了,新座标x=(100/1440)*新分辨率X
,但有许多游戏和网页都不是自适应的,会有许多留白,那样就不清楚了
热心网友
时间:2022-05-13 06:33
在mouse_event里面用户是不能使用鼠标的,以免鼠标位置的移动而产生按键误差(也即可能不是按在你需要的那个位置上)
而postmessage的话好像就是行的,毕竟这个是后台的
直接传递消息给窗口
就像keybd_event和postmessage一样,用keybd_event去模拟按键的话,你按其他的键的同时,程序的按键也一样在进行,那么得到的实际按键就和程序定义的不一样的,而postmessage就不样,只给指定的程序传递按键,你就可以在其他地方用键盘执行其他的事情的。
热心网友
时间:2022-05-13 08:41
mouse_event肯定不行
因为你在调用这个函数的一瞬间马上执行按建的动作
而postmessage这个函数是把按键消息投递到消息列队
至于什么时候执行得看处理器的速度
一般来说
这两个函数一调用都是马上执行按键动作的。楼主问的这个问题
我想从另外一个方面来说
不管这个函数在执行的时候用户能不能去移动鼠标
这些函数执行都是一瞬间的
大概0.02s在这么短的时间内
你怎么知道到底执行的一瞬间鼠标到底能不能移动呢?