1.源码阅读忆丛(37)Minigui
2.按键精灵实战+大漠后台模式分析+源码网游QGFL原地挂机
源码阅读忆丛(37)Minigui
探索GUI的模码gl模历史与实现
对于GUI的细节仍然存在一些困惑,似乎总是块源块有新的东西需要学习。年轻时,模码gl模对《Windows程序设计》、块源块MFC等书籍充满热情,模码gl模那些API的块源块urp water 源码神奇之处让人着迷。然而,模码gl模花费大量时间深入学习,块源块却似乎事倍功半,模码gl模微软似乎更倾向于教人如何使用,块源块而非深入解释实现原理。模码gl模尽管如此,块源块还是模码gl模尝试实现过文字版的GUI,涉及基本的块源块按钮、滚动条、模码gl模菜单等元素。xhook 源码分析但一些细节仍不清楚。
通过网络搜索,了解到魏永明的Minigui项目是对Windows GUI和GDI的模仿。通过下载vc6版本的MinGUI,能够进行调试。在分析代码时,发现事件回调、消息链等常见功能并无特别之处。而DefaultMainWinProc、InvalidateRect、PopupMenuTrackProc等函数则更具实际意义。GUI就像是在显存沙漠中绘画,有其既定规则。DefaultMainWinProc负责实现画最大、最小按钮、src源码下载窗口方框等常规操作,而绘制的动作有其先后顺序,即消息的先后处理。
GDI部分则展示了如何在显存中书写文字,包括粗体、斜体等效果;如何绘制图标和位图;关键的rgn裁剪矩形技术,用于加速绘制,矩形外的绘制不会进行。rgn裁剪矩形的运算包括加、减、合、并等,对应着窗口的各种移动和形状改变。不同线程之间的窗口管理由HWND_DESKTOP统一处理,desktop-common.c相当于窗口管理器,abp 商城源码不同程序无法直接获取其他窗口的位置和大小,由其进行统一管理。desktop包含三个线程,分别负责捕捉键盘、鼠标消息,以及实际消息的处理,以及窗口给desktop的消息交由DesktopWinProc统一处理。
MinGUI的模拟版本在调试方面虽能使用,但功能实现上有缺失。相比之下,libminigui-1.0.提供了完整的gui、gdi、kernel代码,定义了大部分的画窗套路和动作,只需要关注关键部分和自己定义的typescript的源码动作即可。
Linux的GUI采用了xwindows,通过socket将xclient进程中的窗口绘制信息传输到xserver,由xserver统一处理。xclient之间互相不知道窗口的位置和大小,因此都通过xserver进行绘制,xserver还包含了窗口管理器。而MinGUI在一个进程的多个线程中实现,不存在窗口管理器与进程间位置信息传递的问题。
Windows使用wink.sys作为窗口管理器,作为内核态程序,用户态的动态链接库在不同进程间数据段不同,但内核态的数据段统一,因此实现了窗口管理。Windows显示流畅的原因之一在于窗口管理机制与MinGUI的desktop类似,但实现机制有所不同。
工作繁忙,业余时间进行学习。尽管以前对GUI有过大量无用功,但这次的探索仅用几天时间便有所收获。
按键精灵实战+大漠后台模式分析+源码网游QGFL原地挂机
脚本界面展示了一个简洁的多线程多开原地挂机脚本,具备自动开启游戏内置挂机、自动升级绘卷、自动清理背包等功能。下载源码后,替换为个人的大漠插件注册码即可使用,确保游戏窗口设置为X的窗口模式。
为了深入理解游戏的保护机制,本文重点解析了游戏的大漠后台模式。该模式在Windows7 位环境下运行,支持四种图色:gdi、gdi2、dx2、dx3。其中,gdi模式需关闭电脑的aero特效,gdi2模式需开启aero特效,而dx2、dx3模式为通用模式。从效率角度看,推荐使用dx2模式。
针对鼠标操作,推荐使用dx.mouse.position.lock.api、dx.mouse.input.lock.api、dx.mouse.input.lock.api3中的任意一种方法。需要注意的是,脚本运行期间,鼠标应保持在游戏外,避免干扰点击。若需避免干扰,应加入dx.mouse.focus.input.api属性。使用鼠标中键时,同样需要添加dx.mouse.focus.input.api属性。获取后台鼠标特征时,需要添加dx.mouse.cursor属性,但需确保鼠标始终位于游戏内,否则会失败。推荐使用dx.mouse.position.lock.api、dx.mouse.cursor、dx.mouse.raw.input、dx.mouse.position.lock.message、dx.mouse.state.message组合。
键盘操作相对简单,推荐使用dx.keypad.input.lock.api、dx.keypad.state.api、dx.keypad.raw.input中的任意一种,支持组合键操作。推荐使用dx.keypad.input.lock.api。
脚本中public部分留空,模式推荐使用0、2、、、、中的任意一种,其中模式不会隐藏目标进程中的大漠插件。
在绑定游戏窗口时,会遇到偶尔失败的情况。提供两种解决方案:持续对游戏窗口进行绑定,通常需要耗时1分钟左右;或在游戏输入账号界面时对窗口进行绑定。
获取源码命令素材,建议关注按键精灵论坛、知乎账号、微信公众号“按键精灵”。如有问题,欢迎在下方留言或私信作者。
详细内容请参阅:实战+大漠后台模式分析+源码网游QGFL原地挂机 - 集结令●英雄归来教程比武大赛 - 按键精灵论坛