
mousebat 模拟鼠标 *** 作,
调用方式
//clicks at the current position
call mouse click
//double clicks at the current position
call mouse doubleClick
//right clicks at the current position
call mouse rightClick
使用API函数mouse_event可以模拟鼠标事件,比如左键单击、双击和右键单击等。这个实例利用此函数产生了十分有趣的效果,无论鼠标处于屏幕的任何位置,每隔一秒程序会使鼠标在那个位置单击或双击一次,这会给我们造成什么样的混乱呢?试一试就知道了。 先在程序中加入如下的声明后,就能引用mouse_event函数: Private Declare Sub mouse_event Lib "user32" (ByValdwFlags As Long, ByVal dx As Long, ByValdy As Long, ByValcButtons As Long, ByValdwExtraInfo 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,标示是否采用绝对坐标
模拟鼠标点击 (, , )
调用格式: 〈无返回值〉 模拟鼠标点击 (整数型 X坐标,整数型 Y坐标,[整数型 点击类型]) - 应用接口支持库->系统处理
英文名称:SimulateMouse
模拟鼠标的点击。本命令为初级命令。
参数<1>的名称为“X坐标”,类型为“整数型(int)”。
参数<2>的名称为“Y坐标”,类型为“整数型(int)”。
参数<3>的名称为“点击类型”,类型为“整数型(int)”,可以被省略。模拟鼠标点击的类型,可以为以下常量值之一:0、#接口常量左键单击;1、#接口常量左键双击;2、#接口常量右键单击;3、#接口常量右键双击。
*** 作系统需求: Windows
你想做的就是让h窗口响应你想要的鼠标事件吧?
如果h窗口是程序进程创建的,可以重载一下h的PreTranslateMessage看看消息是否被发送过来了,注意只截取你发送的消息。
如果h窗口是别的程序进程创建的,那就只能用工具看看h是否接收到消息了。
还有一个很猥琐的方法。。你可以让鼠标移动过去点击一下然后再回来。。。只是发送消息的话用户一般感觉不到的。。。
Public 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)
Public Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal y As Long) As Long
要用这两个API
先和SetCursorPos设置鼠标位置
再用其 mouse_event 模拟鼠标点击
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
这个代码,模拟了一次鼠标左键的点击,注意先声明常量及相应的API
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
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 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
AutoPressMouse 125, 159
Sleep 3000
AutoPressMouse 165, 254
End Sub
Private Sub AutoPressMouse(x As Long, y As Long)
SetCursorPos x, y
' mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
using SystemRuntimeInteropServices;
[DllImport("user32dll")]
static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
[Flags]
enum MouseEventFlag : uint
{
Move = 0x0001,
LeftDown = 0x0002,
LeftUp = 0x0004,
RightDown = 0x0008,
RightUp = 0x0010,
MiddleDown = 0x0020,
MiddleUp = 0x0040,
XDown = 0x0080,
XUp = 0x0100,
Wheel = 0x0800,
VirtualDesk = 0x4000,
Absolute = 0x8000
}
mouse_event(MouseEventFlagMove, 0, 0, 0, UIntPtrZero)
mouse_event(MouseEventFlagLeftDown, 0, 0, 0, UIntPtrZero);
mouse_event(MouseEventFlagLeftUp, 0, 0, 0, UIntPtrZero);
以上就是关于bat程序循环移动鼠标全部的内容,包括:bat程序循环移动鼠标、用什么API函数可模拟鼠标点击而不影响其他程序工作、易语言模拟鼠标点击等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)