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:如何获得玻璃颜色? 的相关文章

  • 如何使用 P/Invoke 在 PowerShell 1.0 中调用 Win32 函数?

    在许多情况下 从 PowerShell 脚本调用 Win32 函数或其他一些 DLL 会很有用 给定以下函数签名 bool MyFunction char buffer int bufferSize 我听说 PowerShell CTP 2
  • 我可以保存控制台窗口的缓冲区或内容以供将来使用吗?

    我对控制台应用程序很感兴趣 只是想知道 保存控制台窗口的当前缓冲区以供以后使用并提供某种历史导航功能的最佳方法是什么 我知道 Diagnostics 命名空间提供了读取标准输出的能力 但这只是在您重定向它的情况下进行的 所以基本上您必须在新
  • 读取 .ini 文件 vb.net?

    我有一个具有读取 ini 文件功能的项目 我无法显示我想要的 ini 文件的内容 我的代码读取 ini 文件 Public Function GetSettingItem ByVal File As String ByVal Identif
  • 发送和接收 Windows 消息

    Windows 消息似乎是通知 Windows 操作系统上的应用程序的好方法 它实际上运作良好 但我想到了几个问题 How to指定结构化数据lparamSendMessage 例程 就像许多消息代码一样 我的意思是 参数当然是一个指针 但
  • 二进制模式下的 Windows 管道

    我在windows中编写了一个程序 它将播放通过stdin发送给它的二进制音频 我将其称为play 就像linux程序一样 然后我写了一个单独的程序如下 FILE f popen aplay exe wb FILE song fopen C
  • 将第二个显示器显示设置更改为复制

    我正在尝试以编程方式使第二个监视器具有重复的显示 我的下面的功能应该将第二个显示器的显示更改为 重复显示 即使第二个显示器显示第一个 主显示器上的所有内容 我的问题 当我运行我的函数时 它成功找到第二个监视器 并通过更改 DEVMODE d
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • 简单的 C++ 线程

    我正在尝试在 C Win32 中创建一个线程来运行一个简单的方法 我是 C 线程的新手 但对 C 中的线程非常熟悉 这是我想做的一些伪代码 static void MyMethod int data RunStuff data void R
  • 为什么 PathFileExists() 不起作用?

    我想验证文件是否存在 经过一番搜索后 我认为 PathFileExists 可能适合这项工作 但是 下面的代码总是显示该文件不存在 为了确保该文件确实存在 我选择cmd exe的完整路径作为测试文件路径 我使用的是 Windows 7 x6
  • 在 C# 中查看非托管 dll 上的导出表

    我目前正在尝试创建一个 C 应用程序 该应用程序将允许我查看非托管 DLL 中的导出表 我的问题是 一旦我获得了所需的所有指针 我不知道如何循环访问 API 为我提供的信息 这是我现在所拥有的 using System using Syst
  • 为什么 Windows 只允许一个应用程序访问网络摄像头? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我一直在尝试用 C 制作一个示例网络摄像头应用程序 我发现该应用程序无法同时运行 Skype 或 Oovoo 或任何其他应用程序运行 反之亦然 为什么
  • 有没有办法使用 win API 获取 HRESULT 值的字符串表示形式?

    win API 中是否有函数可用于提取 HRESULT 值的字符串表示形式 问题是 MSDN 中并未记录所有返回值 例如执行默认应用程序域 http msdn microsoft com en us library ms164411 asp
  • 如何在 Win32 中获取特定的 TIME_ZONE_INFORMATION 结构?

    Win32 GetTimeZoneInformation 函数返回控制面板中设置的系统本地时区 如何获取另一个特定时区 有没有一个电话可以做到这一点 Tony 根据this http msdn microsoft com en us lib
  • WIN32,C++:是否可以在不隐藏窗口的情况下对窗口进行动画处理?

    我有一个编辑控件 一个文本字段 我想要为其设置动画 我想要的动画是它滑出 为该文本字段创建一条额外的线 我可以为我的文本字段设置动画并使其变大 但是要显示滑动动画 我首先必须隐藏它 这意味着整个文本字段会滑出 就像第一次从无到有一样 而不是
  • 以编程方式最小化/恢复窗口,跳过动画效果

    我需要对窗口列表执行多项操作 最小化其中一些 恢复其他 以便立即在两组或多组窗口之间切换 这样做的问题是最小化和恢复窗口时可以看到的动画 整个过程看起来很糟糕 所有这些动画都进进出出 上下移动 但是 我无法禁用这些动画 因为这是针对其他计算
  • WinApi:获取 COM 表单的控件名称

    我想用 Net 框架替换我当前的 UI 自动化工具 QTP 我需要测试 VB6 COM 应用程序 框架的基础之一是使用表单名称 到目前为止 我未能找到使用 Win API 获取这些数据的方法 该解决方案只有一个约束 即该解决方案必须依赖 N
  • python+win32:检测窗口拖动

    有没有办法检测何时使用 python pywin32 在窗口中拖动不属于我的应用程序的窗口 我想对其进行设置 以便当我拖动标题与桌面边缘附近的图案匹配的窗口时 当松开鼠标时它会捕捉到边缘 我可以编写代码 以便在释放鼠标时将所有具有该标题的窗
  • 更换 I 过滤器

    我目前正在使用 IFilters 从各种文件 word excel tiff pdf 等 中提取文本 据我所知 IFilter 已在 Windows 8 中停止使用 是否有人对如何在不安装本机应用程序的情况下提取文本有任何建议 如果有什么用
  • 在没有主窗口的 MFC 应用程序中创建多个对话框,它们成为彼此的子级

    标题已更新 继从this https stackoverflow com questions 2729371 creating multiple mfc dialogs through com strange behaviour问题 现在我
  • 获取微过滤器驱动程序中的文件路径

    我使用了下面的代码 但它给了我文件路径的结果 status FltGetFileNameInformation Data FLT FILE NAME OPENED FLT FILE NAME QUERY ALWAYS ALLOW CACHE

随机推荐

  • 如何增加 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