一般に、このようなシステム設定を台無しにすることは避けなければならないことはわかっていますが、私のアプリケーションではすでに非標準の色が使用されており、私はそれに影響を与えていません。いくつかの場所に標準の .NET コントロールを追加できるようにしたいのですが、それらの色が一致しません。この 1 つのアプリケーションのシステム カラーを置き換えるハックが必要です。注意すべきもう 1 つの重要な点は、これが .NET アプリケーションであることです。
これまでの私の(不完全な)アイデアは次のとおりです。
- GetSysColor を置き換えてプロキシ User32.dll ライブラリを作成するには、非常に面倒です (731 個の関数をリダイレクトする必要があり、1 個を置き換える必要があります)。アプリケーションでその特定のコピーを強制的に使用する方法もわかりません。
- GetSysColors への呼び出しを何らかの方法でインターセプトするには (残念ながら、CLR のどこかにあると思います)。
- 何らかの方法で.NETクラスのSystemColorsを変更するには(メモリ内?可能ですか?)。
これを達成するための最良の(そして完全な)方法は何ですか?