如何在 Windows 8 中获取活动窗口的标题颜色
Posted
技术标签:
【中文标题】如何在 Windows 8 中获取活动窗口的标题颜色【英文标题】:How to get the caption color of an active window in Windows 8 【发布时间】:2012-09-21 09:53:18 【问题描述】:?
我尝试调用GetSysColor(COLOR_ACTIVECAPTION)
,但它返回不同的颜色。这很奇怪,因为在 Windows 7 中它可以正常工作。还有其他方法可以获取活动窗口的标题颜色或任务栏的颜色吗?
【问题讨论】:
您需要为此调用主题 API 当 DWM/Aero 被禁用时它会返回正确的值。启用后,这些在很大程度上会被忽略,您需要查询主题 API 以获取图像/颜色渐变。 问题是我也无法从 Theme API 获得正确的颜色。我尝试了 GetThemeSysColor(0, COLOR_ACTIVECAPTION) 以及带有 WINDOW/WP_CAPTION/CS_ACTIVE 的 GetThemeColor。 GetThemeSysColor 返回错误的颜色,GetThemeColor 返回错误。您没有任何示例如何从 Theme API 获取活动标题颜色吗? 我找到了解决方案! - 函数 DwmGetColorizationColor @user1614498:那就让它成为答案并接受吧! 【参考方案1】:DWORD WINAPI GetSysColor(
_In_ int nIndex
);
对于GetSysColor()
函数,如果nIndex
参数超出范围,则返回值为零。因为零也是一个有效的 RGB 值,所以您不能使用GetSysColor()
来确定当前平台是否支持系统颜色。相反,请使用 GetSysColorBrush()
函数,如果颜色不受支持,该函数将返回 NULL
。
Click to see the syntax and usage.
另一个选项是使用DwmGetColorizationColor()
函数,它可以检索用于Desktop Window Manager (DWM)
玻璃成分的当前颜色。该值基于当前的配色方案,可由用户修改。应用程序可以通过处理WM_DWMCOLORIZATIONCOLORCHANGED
通知来监听颜色变化。
HRESULT WINAPI DwmGetColorizationColor(
_Out_ DWORD *pcrColorization,
_Out_ BOOL *pfOpaqueBlend
);
【讨论】:
以上是关于如何在 Windows 8 中获取活动窗口的标题颜色的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaFX 中获取 Stage 的窗口句柄 (hWnd)?
如何在c ++ winapi中获取活动文件资源管理器窗口的路径
c#获取活动窗口文本(导致vshost32.exe停止工作)