如何用函数SendMessage模拟鼠标移动?
如何用函数SendMessage模拟键盘按下Alt+A等?Dim i
i = FindWindow(vbNullString, "记事本 - 无标题")
SendMessage i, WM_MOUSEFIRST, ByVal 560&, 0
不知道为什么,我怎么弄都不行
如何用函数SendMessage模拟键盘按下Alt+A等?Dim i
i = FindWindow(vbNullString, "记事本 - 无标题")
SendMessage i, WM_MOUSEFIRST, ByVal 560&, 0
不知道为什么,我怎么弄都不行
解决方案 »
- 请教如何通过输入随机数给*.TXT文件改名?
- 我在win2000下开发的程序,回到win98编译后有错误,(如果解决了,另开贴高分相赠)
- 求教ADO与DAO和RDO的差别.
- to : davidlv (断刀客) ,請發給我一份代碼﹗
- vb 处理数据问题
- 連接sql的database出錯:run-time error '525',Data Access Error
- 我前段时间用 vb写了一个程序,重新装了一个系统,现在再运行时,运行到那个date函数提示编译错误或库未运行,请教是什么原因?
- vb向oracle添加时间类型的字段数据, 是怎么解决的?
- 时间字段的问题?
- 很简单的问题,如何将EXCEL中的数据转换到ACCESS2000中,需源程序(一)
- 为何不能正确返回值
- 怎样使用Document对象?
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)
说明
模拟一次鼠标事件
参数表
参数 类型及说明
dwFlags Long,下述标志的一个组合
MOUSEEVENTF_ABSOLUTE dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元
MOUSEEVENTF_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函数可取得这个值。可用的值取决于特定的驱动程序
注解
进行相对运动的时候,由SystemParametersInfo函数规定的系统鼠标轨迹速度会应用于鼠标运行的速度
x As Long
y As Long
End Type
Dim Buttonpos As POINTAPI
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub Form_Load()
Text1.Text = "按Alt-A组合键开始演示"
Dim tmp As Long
With Command1
Buttonpos.x = (.Left + .Width / 2) / Screen.TwipsPerPixelX
Buttonpos.y = (.Top + .Height / 2) / Screen.TwipsPerPixelY
End With
tmp = ClientToScreen(Me.hwnd, Buttonpos)
End SubPrivate Sub command2_Click()
Dim Cursorpos As POINTAPI
Dim DistX As Double, DistY As Double
Dim tmp As Long
Dim i As Long
Dim PosX As Integer, PosY As Integer
Dim TickCount As Long
tmp = GetCursorPos(Cursorpos)
DistX = Buttonpos.x - Cursorpos.x
DistY = Buttonpos.y - Cursorpos.y
For i = 1 To 40000 '解释:数值越大,鼠标运动越慢,相应的执行时间也就越长。
PosX = Cursorpos.x + DistX * i / 40000
PosY = Cursorpos.y + DistY * i / 40000
tmp = SetCursorPos(PosX, PosY)
Next i
tmp = SendMessage(Command1.hwnd, WM_LBUTTONDOWN, 0, 0)
TickCount = GetTickCount()
While GetTickCount() - TickCount < 200
tmp = DoEvents()
Wend
tmp = SendMessage(Command1.hwnd, WM_LBUTTONUP, 0, 0)
End Sub
Private Sub command1_Click()
Beep
MsgBox "fsafas"
End Sub
Private Sub Timer1_Timer()
SetCursorPos Command1.Left + 10, Command1.Top + 10
tmp = SendMessage(132378, WM_LBUTTONDOWN, 0, 0)
TickCount = GetTickCount()
While GetTickCount() - TickCount < 100
tmp = DoEvents()
Wend
tmp = SendMessage(132378, WM_LBUTTONUP, 0, 0)
Timer1.Enabled = False
End Sub
给你上传了一个源码,你下载看一下吧
http://www.kylixinfo.com/temp/MOUSE.rar
水来回答一下呢?谢谢!