VB后台模拟按键
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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