100分!vb模拟键盘全局钩子,要求当我按住W键的时候,等于每秒按下W键5次,要求全局!求高手支招!

如果源码比较复杂或用到其他控件,可以将源码打包发送至我的邮箱:jlchenjiachen@sina.com 谢谢! 如果测试可用,再加100分!!!
都不是我要的。!求高手继续帮忙

用按键精灵~~~

哈哈,肯定不行。 

-----------------------------------

我再来回答下吧。我的想法就是 递归。也就是说,当产生按键这一事件时,让程序重复模拟5次此按钮,即重复执行这一事件5次。这是我在VB.NET中的代码:

Private i As Integer = 0

    Private j As String

    Private k As Object

    Private t As KeyPressEventArgs

    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

        j = j & e.KeyChar.ToString

        k = sender

        t = e

        i = i + 1

        If i <= 5 Then

            Form1_KeyPress(k, t)

            Exit Sub

        Else

            MsgBox("你按下了:" & e.KeyChar & "键,当前系统自动重复5次按键后为:" & j)

            i = 0

            j = ""

            Exit Sub

        End If

    End Sub

--------------------------------------------------

经测试是可行的,不过如果你具体用到你的程序中要做一定的修改。

最后的测试结果是:按一下a键:

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-12
使用全局钩子,工程已发送到你邮箱,编译后测试比较好,如果运行代码,关闭时按程序的“X",不要按停止按钮,否则可能崩溃,编译后就不会有这种现象。
只对W键做判断,不要长按W键,点按即可,02s一次模拟按钮,1s5次自己测试。
有些杀毒软件可能把钩子程序当做病毒来处理的,如果有这种情况关闭杀毒软件再测试。

我有的邮箱pt98@sina.com
'-----------------------------------
'纯浪费时间,给你的能看懂吗?还都不是你要的,以后把你要的嗮嗮我也学习一下。本回答被提问者采纳
第2个回答  2012-04-09
实现起来比较简单(按住W键,每秒按下W键5次,按住T键,停止按键):
一.在窗体上加入控件timer1,timer2,然后在窗体代码区复制下面代码:
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Form_Load()
Timer1.Interval = 100
Timer1.Enabled = True
Timer2.Enabled = False
Timer2.Interval = 1000
End Sub
Private Sub Timer1_Timer()
If (GetAsyncKeyState(vbKeyW) And &H7FFF) <> 0 Then
Timer2.Enabled = False
SendKeys "{w 4}" '因为已按了1次w键,所以这里再按4次即可
Timer2.Enabled = True '之后每秒按5次w
End If
If (GetAsyncKeyState(vbKeyT) And &H7FFF) <> 0 Then '按t,则停止按键
Timer2.Enabled = False
End If

End Sub
Private Sub Timer2_Timer()
SendKeys "{w 5}"
End Sub
二.运行程序,Ok!
第3个回答  2012-04-09
'申明api函数
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Dim h As Variant, Y As Variant, nm As Variant
Option Explicit
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Dim Locked As RECT
Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long

'Interval 为100 实时监控
Private Sub Timer2_Timer()
Dim i As Long
Dim j As Integer
Dim s As String
'循环判断按键
'只针对按键有效A~Z其他的控制键 和数子键没有写
For i = vbKeyA To vbKeyZ
If GetAsyncKeyState(i) <> 0 Then
s = Chr(i) '将按键的Ascii码 转换为对应的字母
For j = 0 To 3 '循环发送按键 4次(你按的时候已经有1次了加循环4就等于5次了)
SendKeys s '发送指定按键
Next j
End If
Next i
End Sub
'在vb6.0中测试成功
'不知道有没有达到你的要求 能够在一般的任何窗口 实现按键重复
'有的游戏可能可以用 但不能保证100%
第4个回答  2012-04-09
不是一般的难啊,就算做出来,有些程序你一样不能沟住 它,

100分!vb模拟键盘全局钩子,要求当我按住W键的时候,等于每秒按下W键5...
我再来回答下吧。我的想法就是 递归。也就是说,当产生按键这一事件时,让程序重复模拟5次此按钮,即重复执行这一事件5次。这是我在VB.NET中的代码:Private i As Integer = 0 Private j As String Private k As Object Private t As KeyPressEventArgs Private Sub Form1_KeyPress(ByVal sende...

用vb做全局鼠标键盘钩子。。。求助。。
用vb做全局鼠标键盘钩子。。。求助。。 一,能用最好加个快捷键F4+F5+F6用来卸钩。。如果不行就换个二,最好加个开机自动运行和局域网传播(在满足上面一条的基础上)三,给200哦。。。... 一,能用最好加个快捷键F4+F5+F6用来卸钩。。如果不行就换个二,最好加个开机自动运行和局域网传播(在满足上面一条...

vb键盘钩子
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyEscape Then Unload Me End Sub

怎么用 VB实现 键盘替换
要用到全局钩子,要放全局的键盘钩子,在触发钩子程序的时候将参数修改成希望的按键代码就可以了 如果按键其中一个不是控制键的话,VB中必须用键盘钩子才能实现判断按下的是哪两个按键 建议不要研究用VB本身完成上述任务,使用API是很简单的 可以参考一些使用全局钩子的程序,下面是我写的一些代码,此全...

VB .net中如何调用底层键盘钩子或其他方法屏蔽全局所有按键
.net的代码真木有写过。VB 可以屏蔽 包括ctrl+alt+del在内的所有键盘按键消息 其实你只要后台截获按键的消息后,直接屏蔽掉就可以了。VB代码我有 net木有。

bat,vbs,vb,易语言都行,怎样模拟实现输入快捷键alt+w?
VBS代码:set WshShell = WScript.CreateObject("WScript.Shell") '调用 WScript.Sleep 100 '延时0.1秒 WshShell.SendKeys "%W" '发送组合键Alt+W === 郁闷,我以为是普通的按下就OK了,原来是热键级别的...参考下这篇帖子,用VB亲手写一个应该比较有成就感 http:\/\/www.blackglory.tk\/read.php?

vb键盘钩子。。
"小Enter 小NumLock A B C D E F G H I G K L M N O P Q R S T U V W X Y Z " + _"0 1 2 3 4 5 6 7 8 9 ` - = \\ BackSpace " + _"PrintScreen Insert Delete ScrollLock Home End PauseBreak PageUp PageDown " + _"上 下 左 右 ESC F1 F2 F3 F4 F5...

vb 控制鼠标按要求移动。
在屏幕下点击的话可以用鼠标全局键盘钩子。参考代码如下:首先用建立一个标准Exe程序'把窗体名称,设定为frmMain'在窗体上建立一组文本框数组,名称为txtMsg'txtMsg(0) -- 显示鼠标左键按下的次数'txtMsg(1) -- 显示鼠标中键按下的次数'txtMsg(2) -- 显示鼠标右键按下的次数'txtMsg(3) -- ...

如何使用VB代码使键盘上除F1-F12外的按键全部失灵
Long) As IntegerPrivate Type KBHOOKSTRUCT '键盘钩子的结构体vkCode As Long '虚拟键码 shift、ctrl、alt等scanCode As Long '扫描码flags As Long '功能键状态time As LongdwExtraInfo As LongEnd TypePublic Const WH_KEYBOARD_LL = 13&Public lhook As Long '键盘钩子函数句柄...

VB postmessage发送后台Tab
再来看看wMsg 这个参数,要模拟按键就靠这个了。键盘消息常用的有如下几个:WM_KEYDOWN 表示一个普通键被按下WM_KEYUP 表示一个普通键被释放WM_SYSKEYDOWN 表示一个系统键被按下,比如Alt键WM_SYSKEYUP 表示一个系统键被释放,比如Alt键如果你确定要发送以上几个键盘消息,那么再来看看如何确定键盘消息中的wParam ...

相似回答