南方游侠
公开南方游侠 [2009-09-04 21:05:18]
求助,近日开发一个游戏的外挂,发现大部分模拟键盘输入的功能都已经被封锁,偶然发然使用钩子函数SetWindowsHookEx中WH_JOURNALPLAYBACK参数能实现模以输入,但对如何自行构造EVENTMSG中的消息一头雾水,特请教一下。请老马指教一下,谢谢。(PS:功能就如模拟键盘按任一个按键一样,如:按A)
admin [2009-09-06 03:48:37]
不知道你试过SendInput函数没?是直接插入到键盘队列的好象:

[codes=vb]Option Explicit
'*************************************************************************
'**模 块 名:ModSSendKeys
'**说 明:模拟按键(直接发按键消息到输入队列,与直接按键盘相等)
'**创 建 人:马大哈
'**日 期:2006年5月10日
'**描 述:网上收集,更改了部分代码.
'**备 注: 紫水晶工作室 版权所有
'** 更多模块/类模块请访问我站: http://www.m5home.com
'**版 本:V1.0
'*************************************************************************

Private Const VK_H = 72
Private Const VK_E = 69
Private Const VK_L = 76
Private Const VK_O = 79
Private Const KEYEVENTF_KEYUP = &H2
Private Const INPUT_MOUSE = 0
Private Const INPUT_KEYBOARD = 1
Private 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(ByVal bKey As KeyCodeConstants, ByVal PressORRelease As Long)
Dim GInput(0 To 1) As GENERALINPUT
Dim KInput As KEYBDINPUT
Dim I As Long

If PressORRelease = 0 Then
I = 0
Else
I = 1
End If

KInput.wVk = bKey 'the key we're going to press
KInput.dwFlags = 0 'press the key
'copy the structure into the input array's buffer.
GInput(0).dwType = INPUT_KEYBOARD ' keyboard input
CopyMemory GInput(0).xi(0), KInput, Len(KInput)
'do the same as above, but for releasing the key
KInput.wVk = bKey ' the key we're going to realease
KInput.dwFlags = KEYEVENTF_KEYUP ' release the key
GInput(1).dwType = INPUT_KEYBOARD ' keyboard input
CopyMemory GInput(1).xi(0), KInput, Len(KInput)
'send the input now
Call SendInput(1, GInput(I), Len(GInput(I)))
End Sub[/codes]

调用比较简单:

[codes=vb]Option Explicit

Private Sub Command1_Click()
Timer1.Interval = 2000 '两秒,足够切换到游戏画面了
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False

SendKey vbKey1, 0
SendKey vbKey1, 1

SendKey vbKey2, 0
SendKey vbKey2, 1

SendKey vbKey3, 0
SendKey vbKey3, 1

SendKey vbKey4, 0
SendKey vbKey4, 1

SendKey vbKeyReturn, 0
SendKey vbKeyReturn, 1
End Sub[/codes]

以上代码可以成功登录QQ2009.
鱼羊小子
公开鱼羊小子 [2009-07-27 01:02:11]
请教一下“用户控件”如何设置固定的大小呢?!
就像timer控件一样无法改变它的宽高

锁定鼠标范围的小程序(VB6.0代码) 中的“BForm”窗体样式控件可以改变宽,但不能改变高。。。

小弟没看明白是怎么实现的,马哥能讲讲么?!
admin [2009-07-27 15:29:39]
控件Resize()事件里设置height与width就行了.
三断笛
公开三断笛 [2009-07-24 17:42:35]
老马,打算在你这长住,把这博客上的好东西都学走,哈哈~
我经常坐3号线,哪天能碰到你就好了
admin [2009-07-24 19:57:42]
哈哈,欢迎!

只是这里的东西并不多:)

要是哪天碰见了也不一定能认出来呢
传人网赚
公开传人网赚 [2009-07-20 13:52:23]
本人手头上有一个月赚几百美金的博客赚钱项目,现在寻找pr大于2的博客主合作,如果你有兴趣的话可以加我QQ详谈:234963751
动感时尚
公开动感时尚 [2009-07-10 09:27:58]
你好,以博会友做个链接吧,贵站链接已经做好。请审查!
网站名称:动感时尚
网站地址:www.7711h.cn/
admin [2009-07-10 12:02:48]
你好,已经做好!
sanmu052
公开sanmu052 [2009-07-09 23:05:53]
还想问个识别图片验证码的问题.
比如像您这blog里的验证码怎么做自动识别...
admin [2009-07-10 00:39:17]
............汗.

我的验证码是非常容易识别的,使用我发的那个代码,设置一下基本上就可以了...
sanmu052
公开sanmu052 [2009-07-09 23:03:39]
恩,己经解决了,
实现原理:通过类名找句柄,然后模拟键盘输入;
sanmu052
公开sanmu052 [2009-07-08 21:43:37]
请问:一个带有密码控件的网页登录,VB怎么才能实现自动输密码登录???
admin [2009-07-09 21:38:51]
没有做过这个

估计要研究一下具体的控件.
你好呀
公开你好呀 [2009-07-06 15:04:28]
你好呀
我刚建立了一个博客
希望能和你做个链接
不知道行不行,我已经提交了申请
我已经做好你的链接了
谢谢
by 请输入关键词
admin [2009-07-08 02:39:05]
这.........

名称与地址,我应该如何填呢?
时尚起义
公开时尚起义 [2009-06-27 11:04:58]
很喜欢你的博客想和你做个友情连接!!
你的连接已经做好欢迎检查!!
本站名称:时尚起义
本站域名:www.lan07.cn/
admin [2009-06-27 23:45:01]
你好,已经加入:)

欢迎互换!
永远的小菜
公开永远的小菜 [2009-06-20 21:05:42]
马哥:
我想问一下DirectInput是不是只能监视键盘消息,而不能发送消息?
比如只能

If (diState.Key(DIK_9)) Then
MsgBox "你按下了9"
end if

而不会实现象keybd_event那种可以发送按下弹起的消息?

keybd_event VK_9, 0, 0, 0
keybd_event VK_9, 0, KEYEVENTF_KEYUP, 0

如果可以实现发送消息,具体应该怎么写呢?
admin [2009-06-21 17:35:28]
这个我就不清楚了....

没玩过DX.......

看看SDK里有没有相关的东东吧.

不过论坛里有冰下海发的一篇模拟输入的帖子,不知道你看过没:

http://www.m5home.com/bbs/dispbbs.asp?boardid=27&Id=1283
希望能做个连接
公开希望能做个连接 [2009-06-19 14:15:43]
希望能做个连接
我已经提交了申请
贵站的链接已经做好了
谢谢
- QQ空间
admin [2009-06-20 02:27:34]
已添加:)
yyttdd
公开yyttdd [2009-06-16 08:35:19]
sanmu052
公开sanmu052 [2009-05-26 02:45:51]
马哥:
深夜造访,请教个问题?
VB能不能找到AfxWnd70这种窗体?
admin [2009-05-26 04:01:44]
使用FindWindow不就行了么.

只要你的类名或窗体名匹配即可.
苏洋
公开苏洋 [2009-05-21 14:40:01]
我说你给我留了言就没影子了...原来是累倒了...
看了一篇CSDN上的COM自动化类型的帖子,感触很深,用VB的话,似乎接触的都是自动化的COM组件模型,
根本的东西都不能方便的实现...转C++...假期就发疯的搞~~
admin [2009-05-23 13:54:41]
最近是很忙啊.

做项目时很少专门研究一些很底层的东西,而是根据项目特点直接选合适的开发工具.

苏洋
公开苏洋 [2009-05-20 07:30:33]
呵呵,asp是vb的儿子...自己动手改造一下不就完事,况且...似乎好多细节方面[UED]直接用JavaScript[vb的干儿子]会更快点。
马哥不厚到了...至今没见你回访...
admin [2009-05-21 02:51:34]
HOHO......最近忙得头晕,见谅!

要是真去学ASP,应该也不难.

但主要是没那个精力........最近项目快交了,差不多天天整到四五点啊.......
苏洋
公开苏洋 [2009-05-16 19:11:21]
其实也没啥...呵呵,不过看到枕善居的马哥也是PJ-Blog,也是这个问题...还真想问你俩是一个人不~
Pjblog取了表单的数据后,其实应该多一个判断..if left也好,split也罢...但是似乎是没有...
admin [2009-05-16 19:54:06]
哈,他确实也是用的PJBLOG.

我现在还没升级到PJ3,估计PJ3会好很多的.
苏洋
公开苏洋 [2009-05-15 23:40:15]
查看连接可以发现是:www.m5home.com/blog/www.promiseforever.com
因为没有加协议头的问题吧。
admin [2009-05-16 17:21:56]
抱歉抱歉~~~没想到BLOG程序不会自动识别...

已经改正了!
苏洋
公开苏洋 [2009-05-14 22:47:32]
似乎链接有误
admin [2009-05-15 01:11:26]
哪里的链接有误?
偶然
公开偶然 [2009-05-13 00:47:56]
从urldownloadtofile 假死找到了这里,发现很多学习的地方,我也有个pjblog,不过基本和程序无关,大侠的爱好有两个和我相同,无线电(电子方面),编程(电脑方面),我学电气工程及其自动化,~~~~
admin [2009-05-13 03:55:05]
大侠可不敢当,只是摔久了摔出些经验来了而已.....

以后多多交流吧