dm插件在7.2336开始就不支持绑定桌面句柄了。
现在必须绑定目标窗口
然而,对于强检测的游戏,还是有些局限性
没有必要费时费力的强行绑定窗口。
今天,给大家说个思路,怎么应对这种情况。
1:创建一个透明窗口,覆盖在游戏窗口上层
利用Windows窗口消息机制,
创建一个具有 WS_EX_LAYERED(分层透明)和 WS_EX_TRANSPARENT(鼠标穿透)
扩展样式的顶层窗口。此窗口在视觉上完全透明
在逻辑上不拦截任何鼠标/键盘消息,使其成为一个完美的“隐形操作层”。
2:绑定我们创建的窗口
已经实现窗口位置,尺寸,颜色穿透,键鼠穿透
那么绑定我们创建的透明窗口,就实现绑定游戏窗口。
前台代码,所有功能都会穿透过去,直接操作对象。
3:消息循环
利用循环,实时的跟随游戏窗口尺寸变化,尺寸变化。
4:技术风险,弊端
4.1. 图色失真风险:简单全透明设置可能影响大漠截图效果,建议测试或使用GDI+绘制。
4.2. 稳定性风险:可能被反作弊系统误判,需保持置顶(TopMost)以适应目标窗口变化。
4.3. 键盘焦点问题:确保代理窗口永远不获取键盘焦点(如 SW_SHOWNOACTIVATE),以防按键丢失。
5:实现的难度。
在易语言层面,根本不难,黑月的窗口创建,完全可以自定义扩展样式
纯透明,穿透都可以实现
再挂接一个死循环,20行代码可以实现全部。
以下是所需的三个Windows API常量数值:
SW_SHOWNOACTIVATE 4 0x0004 ShowWindow函数参数:以最近的大小和位置显示窗口,但不激活窗口
WS_EX_LAYERED 524288 0x80000 扩展窗口样式:创建分层窗口,支持透明和半透明效果
WS_EX_TRANSPARENT 32 0x00000020L 扩展窗口样式:使窗口鼠标穿透,底层窗口可接收鼠标事件
6:相关代码
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 扩展风格 | 整数型 | | | | 窗口句柄 | | | | | 类名 | 文本型 | | | | 实例句柄 | 整数型 | | |
扩展风格 = 位或 (524288, 32 ) 类名 = “TransparentWindowClass” 实例句柄 = 获取实例句柄 (0 )窗口句柄 = CreateWindowEx (扩展风格, 类名, “”, 位或 (2147483648, 268435456 ), 0, 0, 取屏幕宽度 (), 取屏幕高度 (), 0, 0, 实例句柄, 0 )输出调试文本 (窗口句柄, 实例句柄 ) SetLayeredWindowAttributes (窗口句柄, 0, 0, 2 ) ShowWindow (窗口句柄, 4 )
完结,大家自行测试。
点击链接加入群聊【易语言-吹牛逼】QQ群:607124662
|