以编程方式更改Windows 7的Windows颜色边框

可能重复:
Windows如何改变Aero Glass的颜色?

使用c#在Windows 7上运行aero时如何以编程方式更改窗口边框颜色?

无法单独更改窗口的颜色,但您可以通过resgistry更改操作系统范围内的颜色。 该条目应如下所示: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Glass Colorization\SwatchesHKEY_CURRENT_USER\Software\Microsoft\Windows\DWM - ColorizationColor

在您的代码中,您只能调整玻璃边框的形状和大小,但我不认为颜色。 在Windows窗体中,它就像这样完成,并在WPF中 完成 。

使用C#/ .NET无法做到这一点。 WPF / WindowsForms只允许您更改应用程序内元素的边框。 应用程序边框由用户控制。

虽然bitbonk和george已正确指出窗口无法更改单个窗口的边框颜色,但您可能会查看所有者绘制窗口。 然后,您可以实现所需的function,但窗口很可能看起来不再像“原生”窗口。

在SO上看到这个问题 。

TheCardinal:您的注册表方法不会立即更改颜色,并且需要重新启动桌面窗口管理器服务。 有一个未记录的Windows API函数,允许您立即更改Aero主题的颜色。 (这也是全局变化 – 适用于所有窗口)

虽然我没有C#代码来执行此操作,但VB.NET应该对您有所帮助,因为它们本质上是相同的

  _ Public Shared Sub DwmGetColorizationParameters(ByRef parameters As WDM_COLORIZATION_PARAMS) End Sub //this above function GETS the color, and stores it in parameters.  _ Public Shared Sub DwmSetColorizationParameters(ByRef parameters As WDM_COLORIZATION_PARAMS, ByVal uUnknown As UInteger) End Sub //this above function SETS the color, and stores it in parameters. 

最后结构WDM_COLORIZATION_PARAMS被定义为这样(再次在VB.NET中,抱歉)

 Public Structure WDM_COLORIZATION_PARAMS Public Color1 As Int32 Public Color2 As Int32 Public Intensity As Int32 Public Unknown1 As Int32 Public Unknown2 As Int32 Public Unknown3 As Int32 Public Opaque As Long End Structure 

代码逻辑如下:

 WDM_COLORIZATION_PARAMS temp = getColor(); temp.Color1 = System.Drawing.Color.FromArgb(alpha,red,green,blue).ToArgb(); temp.Color2 = System.Drawing.Color.FromArgb(alpha,red,green,blue).ToArgb(); setColor(temp);