更改单个应用程序的系统颜色(Windows,.NET)

我知道我一般应该避免弄乱这样的系统设置,但我的应用程序已经使用非标准颜色,我对此没有影响.我希望能够在某些地方添加标准.NET控件,但它们的颜色不匹配.我想有一个黑客可以替换这个应用程序的系统颜色.另一个需要注意的重要事项是它是一个.NET应用程序.

到目前为止我的(不完整)想法是:

>要创建一个代替GetSysColor的代理User32.dll库,但它将非常繁琐(731函数重定向,1被替换)并且我不知道如何强制我的应用程序使用该特定副本.
>以某种方式拦截对GetSysColors的调用(不幸的是它在CLR的某个地方我认为).
>以某种方式修改.NET类SystemColors(在内存中?可能吗?).

你有什么想法,最好(和完整)的方法是什么?

解决方法

I would like to be able to add standard .NET controls in some places,but their colors do not match. I would like to have a hack that would replace system colors for this one application.

这就像用大锤敲钉子一样.

您可以做的是从您想要使用的每个库存控件继承一个新控件,而不是在系统内部弄清楚颜色.因此,您可以从库存TextBox控件继承而不是纯文本框来创建自己的ThemedTextBox.您设置此新控件以认使用应用程序的颜色方案,并且因为它仍然是TextBox,就继承结构而言,您可以在任何使用普通文本框的地方使用它,包括winforms设计器中.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...