模拟键盘输入超难问题,不信在CSDN解决不了!

xionghonge 2004-04-29 03:57:20
向游戏模拟发送CTRL+R键,但SendKeys和keybd_event都被该游戏屏蔽了,
但“按键精灵”(一种模拟按键软件)模拟的操作可被该游戏接受!
...全文
140 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
道素 2004-05-08
  • 打赏
  • 举报
回复
这个DirectInput俺还真没查过,从来没涉及过这方面编程,现在查查
xionghonge 2004-05-05
  • 打赏
  • 举报
回复
up
cupidvenus 2004-05-01
  • 打赏
  • 举报
回复
gz
luoxiaoxiang 2004-05-01
  • 打赏
  • 举报
回复
“向游戏模拟发送CTRL+R键,但SendKeys和keybd_event都被该游戏屏蔽了”
不可能吧?是不是搞错了?
captainivy 2004-04-30
  • 打赏
  • 举报
回复
关注~
xionghonge 2004-04-30
  • 打赏
  • 举报
回复
能不能给postmessage按组合键的例子!谢谢!
pigpag 2004-04-30
  • 打赏
  • 举报
回复
The Power of DirectInput
Apart from providing services for devices not supported by the Microsoft Win32API, DirectInput gives faster access to input data by communicating directly with the hardware drivers rather than relying on Microsoft Windows messages.

就是这个DirectInput搞的鬼啦……不过我找不到在DirectInput里面插输入的函数
ljf88888 2004-04-30
  • 打赏
  • 举报
回复
关注!呵呵!节日快乐!
pigpag 2004-04-30
  • 打赏
  • 举报
回复
//如果这个还不行,我就不知道是什么原因了,查看MSDN,相关的api仅仅有
DirectInput的函数查过没有?
道素 2004-04-30
  • 打赏
  • 举报
回复
如果这个还不行,我就不知道是什么原因了,查看MSDN,相关的api仅仅有
ActivateKeyboardLayout
BlockInput
EnableWindow
GetActiveWindow
GetAsyncKeyState
GetFocus
GetKeyboardLayout
GetKeyboardLayoutList
GetKeyboardLayoutName
GetKeyboardState
GetKeyNameText
GetKeyState
GetLastInputInfo
IsWindowEnabled
keybd_event
LoadKeyboardLayout
MapVirtualKey
MapVirtualKeyEx
OemKeyScan
RegisterHotKey
SendInput
SetActiveWindow
SetFocus
SetKeyboardState
ToAscii
ToAsciiEx
ToUnicode
ToUnicodeEx
UnloadKeyboardLayout
UnregisterHotKey
VkKeyScan
VkKeyScanEx
不过我刚才下载了按键精灵,并且用spy++看它发送的消息,我发现它是用postmessage发送
WM_HotKey消息
xionghonge 2004-04-30
  • 打赏
  • 举报
回复
感谢!节日快乐!
道素 2004-04-30
  • 打赏
  • 举报
回复
看来节前我是帮不上忙了,抱歉
道素 2004-04-30
  • 打赏
  • 举报
回复
你进展比我大
今天放假,没想到今天还挺忙
我刚才试了一下在vb中用postmessage发送WM_Hotkey但是不能达到预期效果
而且用spy++并没有发现它发送出WM_Hotkey消息,而是WM_Command之类的,看来我的写法不对

你也可以用spy++检视一下,至于常数是多少先不用管,先用spy++从按键精灵的消息中搞出WM_HOTKEY的消息参数,你原样用vb发送看看效果

还有即使原来不行的api你要考虑每个按键是两个消息,不过你如果已经在游戏以外成功了,可能这点可以跳过这点

xionghonge 2004-04-30
  • 打赏
  • 举报
回复
研究了一上午postmessage按ALT组合键能实现,CTRL组合键找不到相关常数!
我在这里等,等到你研究出结果!
道素 2004-04-30
  • 打赏
  • 举报
回复
一会我试试,看看可否实现,如果今天搞补丁就要等5。8以后了
放假时我不上网
xionghonge 2004-04-29
  • 打赏
  • 举报
回复
程序终于搞懂,也运行正常,在IE中通过测试。
但遗憾的是:对游戏仍然无效!!!!
对游戏仍然无效!!!!
对游戏仍然无效!!!!
对游戏仍然无效!!!!
Private Sub Timer1_Timer()

Dim GInput(0 To 3) As GENERALINPUT
Dim KInput As KEYBDINPUT
KInput.wVk = VK_CONTROL
KInput.dwFlags = 0
GInput(0).dwType = INPUT_KEYBOARD
CopyMemory GInput(0).xi(0), KInput, Len(KInput)

KInput.wVk = VK_R
KInput.dwFlags = 0
GInput(1).dwType = INPUT_KEYBOARD
CopyMemory GInput(1).xi(0), KInput, Len(KInput)

KInput.wVk = VK_R
KInput.dwFlags = KEYEVENTF_KEYUP
GInput(2).dwType = INPUT_KEYBOARD
CopyMemory GInput(2).xi(0), KInput, Len(KInput)

KInput.wVk = VK_CONTROL
KInput.dwFlags = KEYEVENTF_KEYUP
GInput(3).dwType = INPUT_KEYBOARD
CopyMemory GInput(3).xi(0), KInput, Len(KInput)
Call SendInput(4, GInput(0), Len(GInput(0)))
End Sub
xionghonge 2004-04-29
  • 打赏
  • 举报
回复
似乎两个键是先后按下的,也就是先按CTRL(不是按住),再按R键。
xionghonge 2004-04-29
  • 打赏
  • 举报
回复
ch21st(www.blanksoft.com),怎么CTRL按下没反应:
……
Const VK_CONTROL = 17 'ctrl键的虚拟键值
Const VK_R = 82 'R键的ascii码值(虚拟键值)
……

Private Sub Timer1_Timer()
SendKey (VK_CONTROL)
SendKey (VK_R)
End Sub
pigpag 2004-04-29
  • 打赏
  • 举报
回复
建议使用SendInput。这个函数直接将输入插入到系统输入消息列中,应该算是底层的了。
道素 2004-04-29
  • 打赏
  • 举报
回复
试试用SendInput api

Option Explicit
Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
Const VK_O = 79
Const KEYEVENTF_KEYUP = &H2
Const INPUT_MOUSE = 0
Const INPUT_KEYBOARD = 1
Const INPUT_HARDWARE = 2
Private Type MOUSEINPUT
dx As Long
dy As Long
mouseData As Long
dwFlags As Long
time As Long
dwExtraInfo As Long
End Type
Private Type KEYBDINPUT
wVk As Integer
wScan As Integer
dwFlags As Long
time As Long
dwExtraInfo As Long
End Type
Private Type HARDWAREINPUT
uMsg As Long
wParamL As Integer
wParamH As Integer
End Type
Private Type GENERALINPUT
dwType As Long
xi(0 To 23) As Byte
End Type
Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Public Sub SendKey(bKey As Byte)
Dim GInput(0 To 1) As 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.wVk = bKey
KInput.dwFlags = KEYEVENTF_KEYUP
GInput(1).dwType = INPUT_KEYBOARD
CopyMemory GInput(1).xi(0), KInput, Len(KInput)
Call SendInput(2, GInput(0), Len(GInput(0)))
End Sub
加载更多回复(5)
Java范例开发大全(全书源程序),目录如下: 第1篇  Java编程基础 第1章  Java开发环境的搭建(教学视频:9分钟) 2 1.1  理解Java 2 1.2  搭建Java所需环境 3 1.2.1  下载JDK 3 1.2.2  安装JDK 4 1.2.3  配置环境 5 1.2.4  测试JDK配置是否成功 7 实例1  开发第一个Java程序 7 第2章  Java基础类型与运算符 实例2  自动提升 9 实例3  自动转换 10 实例4  常用基础类型之强制转换 11 2.2  运算符 12 实例5  算术运算符 12 实例6  关系运算符 13 实例7  逻辑运算符 14 实例8  位运算符 15 实例9  移位运算符 16 实例10  转型运算符 17 2.3  其他形式 18 实例11  常量与变量 18 实例12  各种进制的转换 19 实例13  Java中的进制与移位运算符 22 第3章  条件控制语句(教学视频:75分钟) 26 3.1  if控制语句 26 实例14  判断输入的年份是否为闰年 26 实例15  抽奖活动 27 3.2  for语句 28 实例16  小九九乘法表 28 实例17  如何列出素数 29 实例18  Java中的递归 31 实例19  男生女生各多少人 32 实例20  求水仙花数 34 实例21  求任意一个正数的阶乘 35 实例22  求n的n次方 35 实例23  利用for循环输出几何图形 36 实例24  杨辉三角 38 3.3  while语句 39 实例25  求1到100之间的和 39 实例26  存上100元需要多少天 40 实例27  输出100之间的所有偶数 41 实例28  如何判断回文数字 42 3.4  do…while语句 43 实例29  输出100之间的所有奇数 44 实例30  求最大的随机数 44 3.5  switch语句 45 实例31  判断字母分类 46 实例32  优良及差 47 实例33  打印任意一年日历 48 实例34  一年四季的划分 51 第2篇  Java数据处理 第4章  异常处理(教学视频:62分钟) 54 4.1  编译时异常 54 实例35  除0发生的算术异常(ArithmeticException) 54 实例36  数组下标越界异常(ArrayIndexOutOfBoundsException) 55 实例37  数组元素类型不匹配异常(ArrayStoreException) 56 实例38  强制类型转换异常(ClassCastException) 56 实例39  索引越界异常(IndexOutOfBoundsException) 57 实例40  空指针异常(NullPointerException) 58 实例41  数字格式转换异常(NumberFornatException) 59 实例42  字符串索引越界异常(StringIndexOutBounds) 60 实例43  操作错误(UnsupportedOperationException) 60 4.2  运行时异常 61 实例44  找不到指定类时发生的异常(ClassNotFoundException) 62 实例45  请求的方法不存在(NoSuchMethodException) 63 4.3  try…catch捕获异常 65 实例46  try…catch捕获异常的实例 66 实例47  try…catch…finally捕获异常的实例 67 实例48  try…catch嵌套捕获异常的实例 68 4.4  throws声明异常 69 实例49  throws声明异常实例一 69 实例50  throws声明异常实例二 70 4.5  throw抛出异常 72 实例51  throw抛出异常实例一 72 实例52  throw抛出异常实例二 73 4.6  自定义异常 74 实例53  自定义异常实例一 74 实例54  自定义异常实例二 75 第5章  数组(教学视频:98分钟) 78 5.1  一维数组 78 实例55  一维数组的创建与使用 78 实例56  按相反的顺序输出 79 实例57  奇偶分组 80 实例58  找宝 81 实例59  寻找最小数 82 实例60  我的位置在哪里 83 实例61  复制数组 85 实例62  插入新元素 86 实例63  数组的合并 87 实例64  去除重复元素 88 实例65  数组求和计算 90 实例66  求最大值、最小值和平均值 91 5.2  二维数组 92 实例67  二维数组的创建与使用 92 实例68  矩阵转置 93 实例69  奇数阶幻

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧