37

フォームのあるCOMDLLがあります。このDLLはC#アプリケーションによって使用されます。C#アプリケーションでビジュアルスタイルを有効にしました。COMDLLのフォームにビジュアルスタイルを適用したくありません。しかし、アプリケーションとlanuch COM DLLのフォームを実行すると、視覚的なスタイルが適用されます。どうすればそれを防ぐことができますか?

多くの人がマニフェストの使用を提案しています。しかし、私がインターネットで目にするマニフェストが何であれ、それらはすべて共通のコントロールを使用します。6.共通のコントロール5.0を使用するマニフェストを作成するにはどうすればよいですか?ActivationContextの使用を提案する人もいます。しかし、それも共通のコントロール5.0を使用する正しいマニフェストが必要ですか?

何か提案してください。

4

1 に答える 1

3

(COM DLLからの)フォームのウィンドウハンドルがある場合は、Win32APIを使用してそのフォームのビジュアルスタイルを無効にできます。

SetWindowTheme( hwnd, "", "" );

APIをP/Invokeする必要があると思います。定義は次のとおりです。

[DllImport("uxtheme.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]
public static extern int SetWindowTheme(
   IntPtr hWnd,
   String pszSubAppName,
   String pszSubIdList);
于 2013-01-17T16:22:11.403 に答える