偶然的机会,在github上发现了一个有趣且优秀的项目,https://github.com/Maplespe/explorerTool。
这里学习了一下,并顺带学习了一下涉及的相关知识点。不得不感叹作者的厉害之处,能想到这种方法。
主要实现原理是:
1、通过ApiHook,在调用CreateWindows函数创建窗口时,如果是资源管理器的内容区域窗口,就将窗口记录下来,
说明:不同版本的Windows版本窗口层级有变化,需要针对不同版本做不同处理
2、通过ApiHook,hook FillRect函数,在系统绘制完成之后 ,调用AlphaBlend函数,绘制背景图像
其它区域都不支持透明,所以没办法让背景全部透过去。
以前想过自己开发一个资源管理器,以便对UI进行完全控制。 但是资源管理器是一个大工程,时间有限,一直没有付诸行动。
从XP以后,再也没有实现过资源管理器背景,这种方法虽然是通过“外挂”的形式实现,但至少也弥补了我心中的一点遗憾。再次感谢原作者。
这个项目主要涉及以下几个知识点
1、GDI绘图(资源管理器的窗口是使用GDI技术进行绘制的,在user32.dll中)
2、ApiHook
3、DLL编程及DLL注入
下面会详细介绍这个功能是如何实现的。
标签:ApiHook,窗口,Windows,背景,编程,资源管理 From: https://www.cnblogs.com/zhaotianff/p/18151801