如何用VB制作按键精灵
解决时间 2021-07-18 16:35
- 提问者网友:感性作祟
- 2021-07-17 16:40
我想制作一个F1~F12的按键精灵
但是在网上看了很多,都是复制的,很乱,也没有原码
希望各位帮帮忙.成功后感激不尽,谢谢。
最佳答案
- 五星知识达人网友:千杯敬自由
- 2021-07-17 17:33
用API函数即可实现:PostMessage
这里有相关介绍
http://baike.baidu.com/view/1080179.htm?fr=ala0
这个方法必须要获得指定窗口的句柄
有两种方法,一是根据窗口名查寻,二是获得当前焦点窗口的句柄
根据窗口名查询使用FindWindowEx
http://baike.baidu.com/view/1080313.htm?fr=ala0
获得当前窗口的句柄使用GetActiveWindow
http://baike.baidu.com/view/1080060.htm?fr=ala0
全部回答
- 1楼网友:时间的尘埃
- 2021-07-17 22:14
看你需要的是简单按键还是复杂的,简单的例如输入字母、自动登录、模拟按键,复杂的例如组合键、模拟鼠标。 如果需要的话就追问。或留QQ
- 2楼网友:洎扰庸人
- 2021-07-17 20:43
'-------------------------------------------
' 模拟鼠标的左键单击和右键单击
'-------------------------------------------
' 洪恩在线 求知无限
'-------------------------------------------
'程序说明:
'本例采用API函数实现模拟的鼠标事件,程序运行后会
'产生十分有趣的效果。也来试一试。
'本例中只使用了相对鼠标坐标,我们也可以使用绝对
'鼠标坐标来试一试。
'-------------------------------------------
'【VB声明】
' 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)
'【说明】
' 模拟一次鼠标事件
'【备注】
' 进行相对运动的时候,由SystemParametersInfo函数规定的系统鼠标轨迹速度会应用于鼠标运行的速度
'【参数表】
' 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函数可取得这个值。可用的值取决于特定的驱动程序
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 Check2_Click()
End Sub
Private Sub Command1_Click()
Timer1.Interval = Combo1.Text * 1000
Timer1.Enabled = True
'如果不处于模拟状态
If OnTest = False Then
Command1.Caption = "停止"
Timer1.Enabled = True
OnTest = True
'如果处于模拟状态
Else
Command1.Caption = "开始"
Timer1.Enabled = False
OnTest = False
End If
If Check1.Value = 1 Then
Form1.WindowState = 1
End If
End Sub
Private Sub Command2_Click()
Timer2.Interval = Combo1.Text * 1000
Timer3.Interval = Combo1.Text * 1000
If Option4.Value = True Then
Timer2.Enabled = True
End If
If Option5.Value = True Then
Timer3.Enabled = True
End If
If Command2.Caption <> "停止" Then
Command2.Caption = "停止"
Else
Command2.Caption = "开始"
Timer2.Enabled = False
Timer3.Enabled = False
End If
If Check1.Value = 1 Then
Form1.WindowState = 1
End If
End Sub
Private Sub Form_Load()
Option_Tag = 1
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
OnTest = False
Combo1.AddItem (1)
Combo1.AddItem (2)
Combo1.AddItem (5)
Combo1.AddItem (10)
Combo3.AddItem ("{F1}")
Combo3.AddItem ("{F2}")
Combo3.AddItem ("{F3}")
Combo3.AddItem ("{F4}")
Combo3.AddItem ("{F5}")
Combo3.AddItem ("{F6}")
Combo3.AddItem ("{F7}")
Combo3.AddItem ("{F8}")
Combo3.AddItem ("{F9}")
Combo3.AddItem ("{F10}")
Combo3.AddItem ("{F11}")
Combo3.AddItem ("{F12}")
Combo3.AddItem ("^A")
Combo3.AddItem ("^B")
Combo3.AddItem ("^C")
Combo3.AddItem ("^D")
Combo3.AddItem ("^E")
Combo3.AddItem ("^F")
Combo3.AddItem ("^G")
Combo3.AddItem ("^H")
Combo3.AddItem ("^I")
Combo3.AddItem ("^J")
Combo3.AddItem ("^K")
Combo3.AddItem ("^L")
Combo3.AddItem ("^M")
Combo3.AddItem ("^N")
Combo3.AddItem ("^O")
Combo3.AddItem ("^P")
Combo3.AddItem ("^Q")
Combo3.AddItem ("^R")
Combo3.AddItem ("^S")
Combo3.AddItem ("^T")
Combo3.AddItem ("^U")
Combo3.AddItem ("^V")
Combo3.AddItem ("^W")
Combo3.AddItem ("^X")
Combo3.AddItem ("^Y")
Combo3.AddItem ("^Z")
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "作者:落魄书生 QQ:510963120", , "关于作者"
End Sub
Private Sub Label3_Click()
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
Private Sub Timer2_Timer()
SendKeys Text1.Text
End Sub
Private Sub Timer3_Timer()
SendKeys Combo3.Text
End Sub 这是代码,希望对你有用!
- 3楼网友:酒安江南
- 2021-07-17 20:26
我这里有完整的VB按键精灵代码 纯VB的 需要加我QQ吧
- 4楼网友:从此江山别
- 2021-07-17 19:07
按键用keybd-event函数,我就这么做的,另外,最好别用f1,放其他键上,f1是系统默认的帮助快捷键,不注意就让你手忙脚乱,取颜色可以用上面的代码
- 5楼网友:老鼠爱大米
- 2021-07-17 18:16
一是根据窗口名查寻,二是获得当前焦点窗口的句柄
我要举报
大家都在看
推荐资讯