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

Mic*_*bon 5 .net winapi colors user32 systemcolors

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

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

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

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

Tho*_*mar 2

在我早期,我开发了一个程序,该程序向所有者绘制窗口边框注册了一个全局消息挂钩 - 我可以为所有窗口设置主题。对于单个应用程序来说这应该也是可能的。然而,这不是一个简单的任务。

否则我认为这是不可能的。使用主题化的第三方控件(例如Krypton Toolkit)怎么样?