首页 > 系统相关 >Windows编程系列:设置资源管理器背景

Windows编程系列:设置资源管理器背景

时间:2024-04-22 23:23:47浏览次数:28  
标签:ApiHook 窗口 Windows 背景 编程 资源管理

偶然的机会,在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

相关文章

  • 实验3_C语言函数应用编程
    Task11#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);8voidprint_spaces(intn);9voidprint_blank_lines(intn)......
  • Python企业面试题5 —— 网络编程和并发
    1.简述进程、线程和协程的区别以及应用场景?#进程:拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度。#线程:拥有自己独立的栈和共享的堆,线程也由操作系统调度。#协程和线程:协程避免了无意义的调度,由此可以提高性能;但同时协程失去了线程使用多CPU的能力。进程与......
  • 关于Windows 10 LTSC 2019无法安装Edge的解决方案
    最近新换了Windows10LTSC2019系统,使用体验干净且流畅,但是在更新Edge时遇到了问题:系统内装的是9x版本的Edge浏览器,并且提示更新错误,有systemlevel方面的问题,查询多方后,最终在MicrosoftCommunity中找到了解决方案,在任意地方创建一个名为edge.reg的注册表文件,具体名称随意,然后用......
  • linux系统是未来_大小写敏感_case_sensitive_编程原生态
    修改py文件......
  • 实验3 C语言函数应用编程
    //task1.c#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函数声明in......
  • windows设置 java 的环境变量
    1.首先打开“我的电脑”里的环境变量如下的 ,选中 “属性” 2.选中属性之后打开高级系统设置 3.点击环境变量3.在系统变量中点击新建4.如图所示: 新建变量名:JAVA_HOME   变量值为:E:\ProgramFiles\java\jdk-22 (这个值是你自己下载jdk的路径)5.点......
  • 实验3 C语言函数应用编程
    实验任务11#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);//函数声明8voidprint_spaces(intn);//函数声明9voidprint......
  • SSH 登陆 Windows 时踩过的坑
    有一次处于某些原因我在Mac上使用SSH远程登陆了Windows,然后在Windows上使用SSH登陆localhost,惊讶地发现登不进去!SSH提示公钥验证失败。可是我的Windows使用的私钥和Mac是一样的,并且以前在Windows上也一直可以登陆localhost,为什么今天突然不行了呢?抱着百思不得......
  • windows清理图标缓存
    bat文件内容::终止WindowsExplorer进程,用于重新加载桌面和任务栏taskkill/f/imexplorer.exe::取消设置图标缓存文件的隐藏属性和系统属性attrib-h-i%userprofile%\AppData\Local\IconCache.db::删除图标缓存文件,以便系统重新生成图标缓存del%userprofile%\Ap......
  • 水资源管理系统:守护生命之源,构建和谐水生态
    水资源是维系地球生态平衡和人类社会可持续发展的重要基础。然而,随着人口增长、工业化和城市化的加速,水资源短缺、水质污染和生态破坏等问题日益凸显。在这样的背景下,构建一个全面、高效、智能的水资源管理系统显得尤为迫切和必要。项目背景水资源的合理利用和有效保护是全球面......