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,下述标志的一个组合 注释:MOUSEEVENTF_ABSOLUTE 注释:dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂 注释: 直方向上均匀分割成65535×65535个单元 - MOUSEEVE 注释: NTF_MOVE 注释:移动鼠标 注释:MOUSEEVENTF_LEFTDOWN 注释:模拟鼠标左键按下 注释:MOUSEEVENTF_LEFTUP 注释:模拟鼠标左键抬起 注释:MOUSEEVENTF_RIGHTDOWN 注释:模拟鼠标右键按下 注释:MOUSEEVENTF_RIGHTUP 注释:模拟鼠标右键按下 注释:MOUSEEVENTF_MIDDLEDOWN 注释:模拟鼠标中键按下 注释:MOUSEEVENTF_MIDDLEUP 注释:模拟鼠标中键按下 注释:dx 注释:Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相 注释: 对运动 注释:dy ------------- Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直 注释: 方向的绝对位置或相对运动 注释:cButtons ------- Long,未使用 注释:dwExtraInfo ---- Long,通常未用的一个值。用GetMessageExtraInfo函数可取得 注释: 这个值。可用的值取决于特定的驱动程序 #End If 注释:WIN32 注释:**********<<[ EOF ]>>*********************************** Dim p1 As POINTAPI, p2 As POINTAPI Dim x Dim Y Dim X1 Dim Y1 Private Const MOUSEEVENTF_MOVE = &H1 Private Const MOUSEEVENTF_LEFTDOWN = &H2 Private Const MOUSEEVENTF_LEFTUP = &H4 Private Const MOUSEEVENTF_ABSOLUTE = &H8000 Private Sub Command1_Click() MsgBox "no" End SubPrivate Sub Command2_Click() MsgBox "yes" End Sub Private Sub Command3_Click() Call MoveCursor(p1, p2) 注释:Mouse由Command1 ->Command2 mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN, X1, Y1, 0, 0 mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTUP, X1, Y1, 0, 0 End SubPrivate Sub Form_Load() Dim rect5 As RECTCall GetWindowRect(Command1.hwnd, rect5) 注释:取得Command1相对於Screen的座标 p1.x = (rect5.Left + rect5.Right) 2 p1.Y = (rect5.ToP + rect5.Bottom) 2 Call GetWindowRect(Command2.hwnd, rect5) p2.x = (rect5.Left + rect5.Right) 2 p2.Y = (rect5.ToP + rect5.Bottom) 2 Label1.Caption = p2.x Label2.Caption = p2.Y x = Label1.Caption Y = Label2.Caption X1 = (65535 1024) * x Y1 = (65535 768) * Y Label3.Caption = X1 Label4.Caption = Y1 End Sub 注释:以下代码在模块里 Type RECT Left As Long ToP As Long Right As Long Bottom As Long End Type Type POINTAPI x As Long Y As Long End TypeDeclare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal Y As Long) As Long Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Public Sub MoveCursor(FromP As POINTAPI, ToP As POINTAPI) Dim stepx As Long, stepy As Long, k As Long Dim i As Long, j As Long, sDelay As Long stepx = 1 stepy = 1 i = (ToP.x - FromP.x) If i < 0 Then stepx = -1 i = (ToP.Y - FromP.Y) If i < 0 Then stepy = -1 For i = FromP.x To ToP.x Step stepx Call SetCursorPos(i, FromP.Y) Sleep (1) Next i For i = FromP.Y To ToP.Y Step stepy Call SetCursorPos(ToP.x, i) Sleep (1) Next i End Sub
使用MakeLong 大致是这样的function makelong(x,y )as long makelong=&HFF * x +y end sub
鼠标移动和点击这个代码片断 需要 一个窗体(废话)~~三个CommandButton 四个Label 一个模块
注释:以下代码在Form1中注释:************[ Functions ]********************************
#If Win32 Then
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,下述标志的一个组合
注释:MOUSEEVENTF_ABSOLUTE
注释:dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂
注释: 直方向上均匀分割成65535×65535个单元 - MOUSEEVE
注释: NTF_MOVE
注释:移动鼠标
注释:MOUSEEVENTF_LEFTDOWN
注释:模拟鼠标左键按下
注释:MOUSEEVENTF_LEFTUP
注释:模拟鼠标左键抬起
注释:MOUSEEVENTF_RIGHTDOWN
注释:模拟鼠标右键按下
注释:MOUSEEVENTF_RIGHTUP
注释:模拟鼠标右键按下
注释:MOUSEEVENTF_MIDDLEDOWN
注释:模拟鼠标中键按下
注释:MOUSEEVENTF_MIDDLEUP
注释:模拟鼠标中键按下
注释:dx
注释:Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相
注释: 对运动
注释:dy ------------- Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直
注释: 方向的绝对位置或相对运动
注释:cButtons ------- Long,未使用
注释:dwExtraInfo ---- Long,通常未用的一个值。用GetMessageExtraInfo函数可取得
注释: 这个值。可用的值取决于特定的驱动程序
#End If 注释:WIN32
注释:**********<<[ EOF ]>>***********************************
Dim p1 As POINTAPI, p2 As POINTAPI
Dim x
Dim Y
Dim X1
Dim Y1
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_LEFTDOWN = &H2 Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Sub Command1_Click()
MsgBox "no"
End SubPrivate Sub Command2_Click()
MsgBox "yes"
End Sub
Private Sub Command3_Click()
Call MoveCursor(p1, p2) 注释:Mouse由Command1 ->Command2
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN, X1, Y1, 0, 0
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTUP, X1, Y1, 0, 0
End SubPrivate Sub Form_Load()
Dim rect5 As RECTCall GetWindowRect(Command1.hwnd, rect5) 注释:取得Command1相对於Screen的座标
p1.x = (rect5.Left + rect5.Right) 2
p1.Y = (rect5.ToP + rect5.Bottom) 2
Call GetWindowRect(Command2.hwnd, rect5)
p2.x = (rect5.Left + rect5.Right) 2
p2.Y = (rect5.ToP + rect5.Bottom) 2
Label1.Caption = p2.x
Label2.Caption = p2.Y
x = Label1.Caption
Y = Label2.Caption
X1 = (65535 1024) * x
Y1 = (65535 768) * Y
Label3.Caption = X1
Label4.Caption = Y1
End Sub
注释:以下代码在模块里
Type RECT
Left As Long
ToP As Long
Right As Long
Bottom As Long
End Type
Type POINTAPI
x As Long
Y As Long
End TypeDeclare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal Y As Long) As Long
Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Public Sub MoveCursor(FromP As POINTAPI, ToP As POINTAPI)
Dim stepx As Long, stepy As Long, k As Long
Dim i As Long, j As Long, sDelay As Long
stepx = 1
stepy = 1
i = (ToP.x - FromP.x)
If i < 0 Then stepx = -1
i = (ToP.Y - FromP.Y)
If i < 0 Then stepy = -1
For i = FromP.x To ToP.x Step stepx
Call SetCursorPos(i, FromP.Y)
Sleep (1)
Next i
For i = FromP.Y To ToP.Y Step stepy
Call SetCursorPos(ToP.x, i)
Sleep (1)
Next i
End Sub
大致是这样的function makelong(x,y )as long
makelong=&HFF * x +y
end sub
makelong=65536 * x + y