我是个VB的初学者,
对API还不会用,
前不久刚用“按键精灵”做了个《泡泡堂》的外挂,
但是觉得“按键精灵”功能太有限了~``
很想用VB做一个~``
可以判断屏幕上某个坐标点的颜色,
然后鼠标运动到某个点上点击,或是按下,弹起~``
还有模拟键盘的按键~`!
还有,请问哪儿有好中文的API的教学资源~```?
谢谢~``
对API还不会用,
前不久刚用“按键精灵”做了个《泡泡堂》的外挂,
但是觉得“按键精灵”功能太有限了~``
很想用VB做一个~``
可以判断屏幕上某个坐标点的颜色,
然后鼠标运动到某个点上点击,或是按下,弹起~``
还有模拟键盘的按键~`!
还有,请问哪儿有好中文的API的教学资源~```?
谢谢~``
VOID mouse_event(DWORD dwFlags,DWORD dx,DWORD dy, DWORD dwExtralnfo);dwFlags為MOUSEEVENTF_MOVE表示移動
MOUSEEVENTF_LBUTTONDOWN表示按鼠標左鍵dx,dy為鼠標座標
dwExtralnfo一般為o
有点深奥哦!
还是不会具体的使用哦~
我找了一些mouse_event的用法:
可不可以给个简单鼠标移动的例子啊??
-----------------------------------------------------------Option Explicit
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 _
)'Option_Tag标示选择了哪一种模拟事件
Dim Option_Tag As Integer
'OnTest标示是否处于模拟状态,以便我们停止模拟
Dim OnTest As Boolean
'对API变量的定义
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'控制 模拟的开始与结束
Private Sub Command1_Click()'如果不处于模拟状态
If OnTest = False Then
Command1.Caption = "快停下来吧"
Timer1.Enabled = True
OnTest = True
'如果处于模拟状态
Else
Command1.Caption = "试一试"
Timer1.Enabled = False
OnTest = False
End If
End Sub'窗体加载时一些变量需要设置
Private Sub Form_Load()
Option_Tag = 1
Timer1.Enabled = False
OnTest = False
End Sub'选择了模拟“鼠标左键单击事件”
Private Sub Option1_Click()
Option_Tag = 1 '左键单击事件
Option2.Value = False
Option3.Value = False
End Sub'选择了模拟“鼠标右键单击事件”
Private Sub Option2_Click()
Option_Tag = 2 '右键单击事件
Option1.Value = False
Option3.Value = False
End Sub'选择了模拟“鼠标双击事件”
Private Sub Option3_Click()
Option_Tag = 3 '双击事件
Option1.Value = False
Option2.Value = False
End Sub'每隔一秒中模拟一次鼠标事件
Private Sub Timer1_Timer()
If Option_Tag = 1 Then
'调用了mouse_event函数,其参数的设置见前面说明
'如果同时要模拟两个鼠标事件,可以用 Or 将两个参数连接
'这里是 鼠标左键按下 和松开两个事件的组合即一次单击
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
ElseIf Option_Tag = 2 Then
'模拟鼠标右键单击事件
mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
Else
'两次连续的鼠标左键单击事件 构成一次鼠标双击事件
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End If
End Sub
鼠标移动: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 Const MOUSEEVENTF_MOVE = &H1 ' 鼠标移动
Public Const MOUSEEVENTF_ABSOLUTE = &H8000 '是否是绝对坐标Private Sub Command1_Click()
x = 40000
y = 30000
mouse_event MOUSEEVENTF_MOVE Or MOUSEEVENTF_ABSOLUTE, x, y, 0, 0
'鼠标移动到40000,30000
'折算为800*600的坐标为800*40000/65535,600*30000/65535
End Sub谢谢: huwei001982(編程浪子) 这是我的学会的第一个API函数! 不知道有没有读取屏幕上某点坐标颜色的API函数???
SetCursorPos函数好象用起来还要方便一些,单位是像素!
不用像mouse_event函数那样做坐标单位的转换~~!
谢谢大哥的帮助啊!
代码也少了很多:
-----------------------------------------------------------------
Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As LongPrivate Sub Command1_Click()
SetCursorPos Val(Text1.Text), Val(Text1.Text)
End Sub
SetCursorPos Val(Text1.Text), Val(Text2.Text)已经结掉了~!