- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Visual Basic后台模拟按键
VB万能后台模拟按键
“相信大家对QQ系列的游戏都有所了解,防外挂技术更是了得!都有所谓的驱动保护,常规方法读写内存都无效,
因为TX的驱动过滤了很多常规的API,还有什么分析工具都不能用,对于QQ西游这款游戏来说,CE,ME,RE都不能用,
即使能获得目标进程句柄,游戏还会定时检测,一旦发现如上工具就自行了断了!
还有QQ西游实现挂机也遇到了难题呢,一般的发送窗口按键消息通通封杀,于是有人想到了硬件级的模拟按键,
使用WinIo模拟,默认的驱动被TX封杀了,只有自己写,但是也不能实现后台挂机,这样用处也不大!”
[问题一,不能获得窗口句柄]
一般寻找窗口句柄都是直接FindWindow吧,这样是不行的,QQ西游在这些函数上做了一些处理.我来给大家说个万能的方法吧,
对于GetWindowText方法游戏就管不到了,可以配合使用GetWindow来枚举所有的窗口,再判断枚举的窗口里面是否含有游戏窗口标题文字,
最后取其句柄就行了,下面我给段代码,也给还有疑问的朋友一些帮助,唷嘻!
Option Explicit
Private Declare Function GetDesktopWindow Lib USER32 () As Long
Private Declare Function GetWindow Lib USER32 (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function GetWindowText Lib USER32 Alias GetWindowTextA (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2
Public Function GetHandle(Title As String) As Long
Dim tmp As String
Dim hwnd As Long
Dim lngProcID As Long
Dim strTitle As String * 255 //用来存储窗口的标题
//取得桌面窗口
hwnd = GetDesktopWindow()
//取得桌面窗口的第一个子窗口
hwnd = GetWindow(hwnd, GW_CHILD)
//通过循环来枚举所有的窗口
Do While hwnd 0
//取得下一个窗口的标题,并写入到列表框中
GetWindowText hwnd, strTitle, Len(strTitle)
If left$(strTitle, 1) vbNullChar Then
tmp = left$(strTitle, InStr(1, strTitle, vbNullChar))
If left(tmp, Len(Title)) = Title Then
GetHandle=hwnd
End If
End If
//调用GetWindow函数,来取得下一个窗口
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop
End Function
直接调用GetHandle函数,然后传一个窗口标题进去就可以获得其窗口句柄了.
[问题二,不能后台模拟按键]
一般发送按键消息都是SendMessage吧,也有用PostMessage的,一般人用这两个函数都不成功,于是就走向硬件级的模拟按键,
其实这是错误的,这样反而离目标越来越远,使用普通的PostMessage就行了,有人问了,不是过滤了么?
呵呵,让我们重新来了解下键盘按键的流程吧。我们一般按下键盘,键盘会发送自身对应的扫描码,然后传递给系统,在系统中由对应的键盘驱动来处理此消息,但是不同的设备扫描码有可能不一样,为了规范统一,于是出现了虚拟码,驱动将扫描码转换成对应的虚拟码后,
插入应用程序的消息队列中,等待应用程序处理,这样一个完整的流程就构成了,现在我们再来看看PostMessage的函数原型吧.
BOOL PostMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam );
一个参数是窗口句柄,第一个问题中,我们已经得到.第二个
文档评论(0)