抽空学习VB,VC++之 VB游戏外挂学习制作(二)

本文介绍两种实现全局模拟键盘的方法,一种是直接使用keybd_event函数,另一种是通过SendInput函数发送键盘消息,这两种方法都可以实现在任何窗口中模拟键盘操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

实验二:全局模拟键盘




跟上次不同,上次是需要知道具体窗口的句柄,现在不用了,所有窗口都响应的就叫全局咯。

 简单得很,看吧。

(一)

添加模块

编写代码
Declare Sub keybd_event Lib "user32" (ByVal bVk As ByteByVal bScan As ByteByVal dwFlags As LongByVal dwExtraInfo As Long)
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Public Const VK_A = &H41


然后编写窗体代码


Private Sub Command1_Click()
Dim i As Integer
For i = 0 To 30
keybd_event VK_A, 
000      '按下A键
Sleep 500            '延时500毫秒
Next i
End Sub


对一些DIRECTX游戏,最好还是用
’先获得按键的扫描码
keybd_event VK_A, MapVirtualKey(VK_A, 0), 0, 0   '按下A键

OK,执行就可以体验了,选中一个可以输入的地方。

(二)


第二种方法比较麻烦,虽然功能也差不多

模块代码
Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As LongAs Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 Type GENERALINPUT
   dwType 
As Long
   xi(
0 To 23As Byte
 
End Type

 Type KEYBDINPUT
  wVk 
As Integer
  wScan 
As Integer
  dwFlags 
As Long
  time 
As Long
  dwExtraInfo 
As Long
 
End Type

Const INPUT_KEYBOARD = 1
Public Const VK_A = &H41
Sub MySendKey(bkey As Long)
'参数bkey传入要模拟按键的虚拟码即可模拟按下指定键
Dim GInput(0 To 1As GENERALINPUT
Dim KInput As KEYBDINPUT
 KInput.wVk 
= bkey  '你要模拟的按键
 KInput.dwFlags = 0 '按下键标志
 GInput(0).dwType = INPUT_KEYBOARD
 CopyMemory GInput(
0).xi(0), KInput, Len(KInput) '这个函数用来把内存中KInput的数据复制到GInput
 KInput.wVk = bkey
 KInput.dwFlags 
= KEYEVENTF_KEYUP  ' 释放按键
 GInput(1).dwType = INPUT_KEYBOARD ' 表示该消息为键盘消息
 CopyMemory GInput(1).xi(0), KInput, Len(KInput)
'以上工作把按下键和释放键共2条键盘消息加入到GInput数据结构中
 SendInput 2, GInput(0), Len(GInput(0))    '把GInput中存放的消息插入到消息列队
End Sub



编写窗体代码


Private Sub Command1_Click()
Dim i As Integer
For i = 0 To 30
MySendKey VK_A      
'按下A键
Sleep 500            '延时500毫秒
Next i
End Sub



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值