Vista/7:如何获得玻璃颜色?

2023-11-24

你怎么用DwmGetColorizationColor?

The 文档说它返回两个值:

  • 32 位0xAARRGGBB含有用于玻璃成分的颜色
  • 一个布尔参数,“如果颜色是不透明的混合颜色”,则为 true (不管什么意思)

Here's a color that i like, a nice puke green: alt text

You can notice the color is greeny, and the translucent title bar (against a white background) shows the snot color very clearly: enter image description here

我尝试从 Windows 获取颜色:

DwmGetColorizationColor(dwCcolorization, bIsOpaqueBlend);

我得到

dwColorization: 0x0D0A0F04
bIsOpaqueBlend: false

根据文档,该值的格式为AARRGGBB,因此包含:

AA: 0x0D (13)
RR: 0x0A (10)
GG: 0x0F (15)
BB: 0x04 (4)

据推测,这意味着颜色为 (10, 15, 4),不透明度约为 5.1%。

但如果你真的看一下这个 RGB 值,它与我想要的鼻涕绿色相差甚远。这是

  • (10, 15, 4),不透明度为零(原始颜色),并且
  • (10,15,4),白色/棋盘背景下不透明度为 5%:

alt text

而不是成为Lime green, DwmGetColorizationColor返回几乎完全透明的black.

所以问题是:玻璃颜色如何获得在 Windows Vista/7 中?

我尝试使用DwmGetColorizationColor,但这效果不太好。


A person with same problem, but a nicer shiny picture to attract you squirrels: alt text

所以,归结为—— DwmGetColorizationColor 完全 无法用于尝试使用的应用程序 将当前颜色应用到 不透明表面。


i love 这个人的截图比我的好多了。使用他的屏幕截图作为模板,我制作了更多的火花:

alt text

alt text

alt text

alt text

alt text

alt text

对于最后两个屏幕截图,Alpha 混合芯片是真正的部分透明 PNG,与浏览器的背景混合。凉爽的! (我真是个极客)

编辑2:必须将它们排列成彩虹色。 (我真是个极客)

编辑3:现在我当然必须添加黄色。


无记录/不受支持/脆弱的解决方法

有无证出口DwmApi.dll在入口点 137,我们称之为DwmGetColorizationParameters:

HRESULT GetColorizationParameters_Undocumented(out DWMCOLORIZATIONPARAMS params);

struct DWMCOLORIZATIONPARAMS
{
   public UInt32 ColorizationColor;
   public UInt32 ColorizationAfterglow;
   public UInt32 ColorizationColorBalance;
   public UInt32 ColorizationAfterglowBalance;
   public UInt32 ColorizationBlurBalance;
   public UInt32 ColorizationGlassReflectionIntensity;
   public UInt32 ColorizationOpaqueBlend;
}

我们对第一个参数感兴趣:ColorizationColor.

我们还可以从注册表中读取该值:

HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM
    ColorizationColor: REG_DWORD = 0x6614A600

所以你选择了创建应用程序兼容性问题的毒药。你可以

  • 依赖于未记录的 API(即bad, bad, bad, 并且可以随时离开)
  • 使用未记录的注册表项(这也是bad, and 随时可以离开)

See also

  • 是否有 GetThemeColor / Visual Styles API 的有效参数组合列表
  • Windows 如何改变 Aero Glass 颜色?
  • DWM - 使用 DWMGetColorizationColor 进行着色颜色处理
  • 检索 Aero Glass 基色以进行不透明表面渲染

我一年多以来一直想问这个问题。我一直都知道这是不可能回答的,而让人们真正关注的唯一方法就是拥有丰富多彩的屏幕截图;开发人员被闪亮的东西所吸引。但不利的一面是,这意味着我必须投入各种精力来制作鱼饵。


着色颜色!=所选的基色。我知道这是误导。

但我很困惑。您借用的图片来自我的帖子,题为“检索 Aero Glass 基色以进行不透明表面渲染“。这不是你想要做的吗?我还在帖子中指出了存储所有颜色信息的注册表位置(HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM)以供检索之用。

8/26 编辑

DwmGetColorizationColor (dwmapi.dll) 返回“着色颜色”,它是各种颜色(包括您选择的基色)和着色器逻辑的混合,以实现整体玻璃效果。

您需要/想要的所有颜色信息都可以在上面提到的注册表项中找到。基色、混合中使用的颜色以及最终的着色颜色都在那里。

(上面的键存在于 Windows Vista 及更高版本中。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vista/7:如何获得玻璃颜色? 的相关文章

  • 以编程方式更改任务栏图标(Win32,C++)[重复]

    这个问题在这里已经有答案了 我有一个 C win32 程序 我想在运行时编辑任务栏图标以显示有关该程序的警报等 但是我对 win32 api 不太有经验 而且我找不到任何东西在线的 我发现的最接近的是http www windows tec
  • 提取证书中主题属性的所有值

    我目前正在使用CertGetNameString http msdn microsoft com en us library windows desktop aa376086 28v vs 85 29 aspx提取每个主题属性的值 如下所示
  • 有没有一种方法可以移动文件并能够在中间取消移动?

    我在用着CopyFileEx具有该功能的复制文件 有没有类似的东西可以移动文件 请记住 并非每次移动都很快 移动到不同的驱动器实际上是一个副本 我现在的解决方案是 如果移动到不同的根目录 则复制并删除原始文件 如果移动到相同的根目录 则简单
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 全局拦截窗口移动

    我无法让全局系统挂钩正常工作 我希望在窗口移动时尽早收到通知 并更改窗口大小 这意味着 CBT 钩子HCBT MOVESIZE不会削减它 它只会在窗口移动后发生 我想挂钩窗口的实际移动 并能够在移动过程中更改窗口大小 挂钩是从 DLL 设置
  • WinForms:如何确定窗口是否不再活动(没有子窗口具有焦点)?

    我的应用程序使用多个窗口 我想隐藏一个特定窗口 以防应用程序失去焦点 当活动窗口不是应用程序窗口时 source https stackoverflow com questions 466354 how can i tell if a wi
  • P/invoke 函数采用指向结构的指针[重复]

    这个问题在这里已经有答案了 功能如创建进程 http msdn microsoft com en us library ms682425 VS 85 aspx有带有指向结构的指针的签名 在C中我会通过NULL作为可选参数的指针 而不是在堆栈
  • 使用 SetWindowsHookEx() 阻止窗口鼠标单击

    我编写了一个应用程序 将某些过程挂接到新进程上 以监视鼠标按下事件并禁用新进程上的鼠标按下事件 截至目前 我能够捕获进入此进程的鼠标按下事件 并且我正在尝试将所有鼠标按下事件作为 POC 禁用 这就是我目前在钩子程序中所做的事情 exter
  • 在 Java Swing 中,如何获取对窗口的 Win32 窗口句柄 (hwnd) 引用?

    在 Java 1 4 中 您可以使用 SunToolkit Toolkit getDefaultToolkit getNativeWindowHandleFromComponent 但它已被删除 看来现在必须使用 JNI 来执行此操作 您有
  • GDI 函数 BitBlt 和 StretchBlt 在 Win32 中是否硬件加速?

    我似乎无法通过搜索得到明确的答案 Win32 blitting 操作是否硬件加速 GDI 而不是 GDI 我不知道这些函数如何与图形驱动程序交互 是否有任何函数调用来验证此功能 例如 GetCaps 对于特定的图形设备 win32图形设备
  • 高级 Win32 图像文件 I/O?

    我想在 Windows C 应用程序中将图像文件读入内存 什么是一个相当简单的解决方案 也许类似于 IOS 提供的UIImage 我希望支持合理数量的文件格式 我需要为图像处理的位图提供一些低级访问权限 我在互联网上阅读了很多内容 看起来
  • 将对话框项分组到单个“组”(Visual Studio)

    我想创建一个对话框窗口来更改应用程序的设置 下面是 Adob e Reader 的屏幕截图 使用 Spy 后 我猜想 在右侧 所有控件 按钮 组合框 等 都属于 GroupBox 对于左侧TreeView控件中的每个类别 都有一个相应的Gr
  • 如何删除Windows 10版本1809剪贴板历史记录?

    如果我启用剪贴板历史记录 https www windowscentral com how use new clipboard windows 10 october 2018 update在 Windows 10 版本 1809 上 它将开
  • 是否有可能劫持标准输出

    我正在尝试使用 C 重定向 Windows XP 上已运行进程的标准输出 我知道如果我自己生成进程 我可以做到这一点 但对于这个应用程序 我更喜欢一个 监听器 我可以附加到另一个进程 这在纯 Net 中可能吗 如果不可能 在 Win32 中
  • 检查 Win32 线程是否正在运行或处于挂起状态

    如何检查 Win32 线程是否正在运行或处于挂起状态 我找不到任何提供线程状态的 Win32 API 那么如何获取线程状态呢 我认为 最初 没有提供此信息 因为任何提供此信息的 API 都会产生误导且无用 考虑两种可能的情况 当前线程已挂起
  • 如何在 Rust winapi 编程中使用 COM VARIANT?

    我正在尝试转换C COM 代码 https technet microsoft com pt br aa382113 v vs 71 for TaskSchedulerRust 并坚持VARIANT的论证ITaskService Conne
  • 了解 VerQueryValue

    在 MSDN 上 我注意到 VerQueryValue 函数的以下内容 lplp缓冲区 输出 低电压空洞当此方法返回时 包含指向 pBlock 指向的缓冲区中所请求版本信息的指针的地址 当关联的 pBlock 内存被释放时 lplpBuff
  • 即使我使用 SetWindowTextW(),Unicode 文本在编辑框中显示为问号

    我遇到了 unicode 文件名在编辑框中显示为问号的问题 当我将 unicode 字符 例如阿拉伯语或泰语 粘贴到编辑框中时 它们会正确显示 但在运行此代码后 它们会变成问号 怎么会 WCHAR buf 100 GetWindowText
  • 使用 WinAPI 连接禁用的显示设备

    我的问题是启用禁用的监视器ChangeDisplaySettingsEx 我想这不是火箭科学 但经过一番挖掘后 它看起来仍然是不可能的 我找到了一种根据找到的 Microsoft 代码示例禁用所有辅助显示器的方法here https msd
  • 有关 CredEnumerate 的帮助

    作为后续this https stackoverflow com questions 199518 how to programatically add mapped network passwords winxp我希望有人可以帮助解决这个

随机推荐

  • 如何增加 R 箱线图中箱线的粗细?

    如何使用基本 R 图或箱线图函数增加箱线图 箱 部分轮廓线的粗细 也就是说 如何加粗定义分位数的框线 对于这样的情节 boxplot rnorm 100 50 10 horizontal TRUE notch TRUE 我想我需要包括一个p
  • Python 2 和 Python 3 中 zip() 函数的区别[重复]

    这个问题在这里已经有答案了 我想知道两者之间有什么区别zip python 2和python 3中的函数是 我在使用时注意到timeit这两个函数的模块表明 python 3 函数要快得多 预先非常感谢 Python 2 和 Python
  • SQLite 查询从多个表中删除

    我使用查询来检索具有特定列名称的表列表 select name from sqlite master where type table and sql like unique col id 因此 它返回一个表名称列表 例如 table 1
  • 如何获取应用程序快捷方式的当前目录路径

    我想获取当前目录路径 但不是应用程序位置的路径 而是其快捷方式位置的路径 我尝试了这些 但它们返回了应用程序的位置 Directory GetCurrentDirectory Path GetDirectoryName System Ref
  • 如何在 Django Admin 中覆盖 css?

    我想更改管理 django 中的某些 css 例如base css 直接在django库里改是不是更好 我怎样才能以最好的方式覆盖它 这在很大程度上取决于你想做什么 首先 不要直接在 Django 管理中覆盖它 我认为你有两个合理的选择 如
  • 如何使用 REACT 渲染/更新我的表?

    当我点击时 我无法进行多重交叉过滤Apply 应用我从下拉列表中选择的所有选项 或Cancel按钮 重置所选选项 例如过滤条件taste and availability 请看图片 但我无法呈现过滤后的行 更新的表 export defau
  • IE10 是否支持触摸事件?

    我正在考虑做一个针对使用触摸屏的 Internet Explorer 10 的项目 我目前没有方便的触摸屏 但需要知道 Internet Explorer 10 是否支持或将支持 DOM 触摸事件 Update 触摸事件是开发中在 Inte
  • 如何检查函数调用是否会导致警告?

    在 R 中 如何确定函数调用是否会导致警告 也就是说 在调用该函数后 我想知道该调用实例是否产生了警告 如果您想使用try构造中 您可以设置警告选项 也可以看看 options 更好的是使用tryCatch x lt function i
  • Github推送错误:RPC失败;结果=22,HTTP 代码=413

    Github 现在正在发生愚蠢的问题 我有相当多的更改 大小约为 120MB 当我尝试推送时 会发生以下情况 error RPC failed result 22 HTTP code 413 fatal The remote end hun
  • 基于路径的路由到 cloudfront 和 ec2

    目前我们有两个 ec2 实例 假设 A 和 B 和一个 Cloudfront 如果用户访问 www appdomain com app 用户应该被路由到 cloudfront SPA 页面 但是 如果用户访问 www appdomain c
  • 如何使用 C# 以编程方式将证书安装到本地计算机存储中?

    我有一个通过 MakeCert 生成的证书 我想通过 PeerTrust 将此证书用于 WCF 消息安全 如何使用 C 或 NET 以编程方式将证书安装到 受信任的人 本地计算机证书存储中 我有一个 CER 文件 但也可以创建一个 PFX
  • ASP.NET MVC 3 通用显示模板

    我刚刚开始使用 ASP NET MVC 3 的项目 我正在现有的对象系统之上进行构建 因此我要做的第一件事就是为现有的各种类型定义显示和编辑器模板 在 MVC 中是否可以使用通用参数定义 DisplayTemplate 例如 我们有一个Bi
  • asp.net MVC3 和 jquery AJAX 教程 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我需要一本非常详细的电子书
  • 在十六进制数组中打印字符缓冲区

    我正在将 512 个字符读入缓冲区 并希望以十六进制显示它们 我尝试了以下方法 但它始终输出相同的值 尽管应该通过网络接收不同的值 char buffer 512 bzero buffer 512 n read connection fd
  • 从 Netbeans 构建时自动签署 JAR

    我想知道 Netbeans 是否有一些选项或设置允许我在构建过程中自动签署 jar In your post jarant target 阅读一下可能会方便来自文件的密码 例如 keyconf 授予文件仅限用户访问权限 例如400 or 6
  • System.Threading.Timer 仅触发一次

    使用下面的代码 计时器仅触发一次 我缺少什么 public static List
  • 如何在Android项目中从头开始设置DAGGER依赖注入?

    如何使用匕首 如何配置 Dagger 在我的 Android 项目中工作 我想在我的 Android 项目中使用 Dagger 但我发现它很混乱 编辑 Dagger2 也于 2015 年 04 月 15 日发布 而且更令人困惑 这个问题是一
  • 如何水平滚动网页?

    我想开发一个每当用户向下滚动鼠标滚轮时向左移动的网页 一般来说 所有网站都是垂直滚动的 但这应该水平滚动 示例代码 div style width 100 height 400px here goes the content div 我的目
  • Java 中的条件数字格式

    如何在 Java 中格式化浮点数 以便仅在浮点数不为零时才显示浮点组件 例如 123 45 gt 123 45 99 0 gt 99 23 2 gt 23 2 45 0 gt 45 编辑 我忘了提及 我仍在使用 Java 1 4 抱歉 如果
  • Vista/7:如何获得玻璃颜色?

    你怎么用DwmGetColorizationColor The 文档说它返回两个值 32 位0xAARRGGBB含有用于玻璃成分的颜色 一个布尔参数 如果颜色是不透明的混合颜色 则为 true 不管什么意思 Here s a color t