Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.NET中创建shell样式的标题栏按钮_C#_.net_Vb.net_Winapi_Titlebar - Fatal编程技术网

C# 如何在.NET中创建shell样式的标题栏按钮

C# 如何在.NET中创建shell样式的标题栏按钮,c#,.net,vb.net,winapi,titlebar,C#,.net,Vb.net,Winapi,Titlebar,这是我先前问题的后续行动 我最近重新讨论了这个话题,发现它本质上是对Aero启用的标题栏(WindowsVista&7)上的“绘图”按钮的攻击。代码所做的是在当前窗口上创建一个透明窗口,并将按钮放置在该窗口上,在标题栏上显示其他按钮。唯一的问题是按钮看起来像普通的WinForms按钮 我的问题是,如何阅读windows外壳样式(又名主题),以便创建与控制框中的按钮样式相同的按钮(见图) 我希望答案在.NET(VB.NET或C#)中。我对非托管代码没有意见 因此,如果我理解正确,您希望阅读Wind

这是我先前问题的后续行动

我最近重新讨论了这个话题,发现它本质上是对Aero启用的标题栏(WindowsVista&7)上的“绘图”按钮的攻击。代码所做的是在当前窗口上创建一个透明窗口,并将按钮放置在该窗口上,在标题栏上显示其他按钮。唯一的问题是按钮看起来像普通的WinForms按钮

我的问题是,如何阅读windows外壳样式(又名主题),以便创建与控制框中的按钮样式相同的按钮(见图)

我希望答案在.NET(VB.NET或C#)中。我对非托管代码没有意见


因此,如果我理解正确,您希望阅读Windows 7所称的当前主题的“窗口颜色”方面

根据MSDN,您希望DwmGetColorizationColor:“检索用于DWM玻璃合成的当前颜色。此值基于当前颜色方案。更改设置将导致WM\WMU ColorizationColorChanged通知。”


“您可以通过调用DwmGetColorizationColor函数来检查合成颜色和不透明度。如果此函数成功,它将设置一个GDI+ARGB颜色值和一个指示颜色是否不透明的布尔值。就像在控制面板中更改Aero方案一样,当构图颜色更改时,会广播一条消息。WM_DWMCOLORIZATIONCOLORCHANGED会在发生这种情况时发送,但在这种情况下,参数会告诉您新的颜色和不透明度。”

感谢您的回复。虽然这不是我真正想要的,但读起来很好。我想做的是创建一个类似于进入控制框的按钮(最大、最小和关闭)。可能没有API:这就是为什么我认为您可能需要阅读窗口颜色,然后使用窗口颜色作为提示来绘制按钮。您能想到其他任何应用程序可以完成您正在尝试的操作吗?是的。请参阅我在第一个问题中添加的屏幕截图().DisplayFusion,一个多桌面管理器可以通过辉光效果来实现这一点。
[DllImport("dwmapi.dll", PreserveSig = false)]
public static extern void DwmGetColorizationColor(out int pcrColorization, [MarshalAs(UnmanagedType.Bool)]out bool pfOpaqueBlend);