永发信息网

如何用VB制作按键精灵

答案:6  悬赏:30  手机版
解决时间 2021-07-18 16:35

我想制作一个F1~F12的按键精灵

但是在网上看了很多,都是复制的,很乱,也没有原码

希望各位帮帮忙.成功后感激不尽,谢谢。

最佳答案

用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

全部回答
看你需要的是简单按键还是复杂的,简单的例如输入字母、自动登录、模拟按键,复杂的例如组合键、模拟鼠标。 如果需要的话就追问。或留QQ
'------------------------------------------- ' 模拟鼠标的左键单击和右键单击 '------------------------------------------- ' 洪恩在线 求知无限 '------------------------------------------- '程序说明: '本例采用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 这是代码,希望对你有用!
我这里有完整的VB按键精灵代码 纯VB的 需要加我QQ吧
按键用keybd-event函数,我就这么做的,另外,最好别用f1,放其他键上,f1是系统默认的帮助快捷键,不注意就让你手忙脚乱,取颜色可以用上面的代码
一是根据窗口名查寻,二是获得当前焦点窗口的句柄
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁能告诉我Q靓号如何买断阿.!
手机网秦防盗软件忘记密码怎样取消
申请退出诚信保证金多久能收到钱
我的QQ怎么登不起了啊?服务器拒绝了.是什么意
谁能用匡慧琪作首诗
QQ游戏 负分清零道具怎么使用呢?
谁知道这个网站里的XP镜像文件在那?
DNF怎么打不开!!出现这个问题!!我把游戏
戒指戴在右手食指是啥意思?
怎么才能完全治好痤疮.
守卫剑阁2.7
1992年正月初三出生的是什么星座?
dnf更新完了上不去
冒险岛3飞70%的书
5800XM是水货好还是行货好?水货的质量有一定
推荐资讯
刚出生20多天的宝宝感冒了,能给他《她》吃什
外贸业务员工资结构
什么样的话可以打动女孩?
老天为什么会打雷
人为什么会有分别心
看下我的胃出什么事了,做的胃镜报告,厉害吧
烽火战国图标能点亮了吗。
如果我想他又不能和他在一起我该怎么办?
内分泌失调是什么引起的?有什么可以快速调节
qq空间装扮自定义的问题
咱家饺子(拥军路)我想知道这个在什么地方
友情、爱情,可以相信哪个?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?