我知道通常应该避免更改此类系统设置,但我的应用程序已经使用了非标准颜色,我对此没有影响。我想在某些地方添加标准的.NET控件,但它们的颜色不匹配。我想要一个方法来替换这个应用程序的系统颜色。还有一件重要的事情需要注意,它是一个.NET应用程序。
我目前的(不完整)想法是:
- 创建一个代理User32.dll库,并替换GetSysColor,但这将非常繁琐(需要重定向731个函数,替换1个函数),而且我不知道如何强制我的应用程序使用特定的副本。 - 以某种方式拦截对GetSysColors的调用(不幸的是,我认为它在CLR中)。 - 修改.NET类SystemColors(在内存中?是否可能?)。
你有什么想法,最好的(并完整的)实现方式是什么?
我目前的(不完整)想法是:
- 创建一个代理User32.dll库,并替换GetSysColor,但这将非常繁琐(需要重定向731个函数,替换1个函数),而且我不知道如何强制我的应用程序使用特定的副本。 - 以某种方式拦截对GetSysColors的调用(不幸的是,我认为它在CLR中)。 - 修改.NET类SystemColors(在内存中?是否可能?)。
你有什么想法,最好的(并完整的)实现方式是什么?
control.BackColor = control.BackColor
)来解决此问题。FlatStyle.Flat
才能完全依赖于BackColor / ForeColor
属性。