Визуальные стили не работают на внутрипроцессном COM-сервере

Я разрабатываю программу, в которой используются визуальные стили. Метод Main выглядит так:

[STAThread]
static void Main() {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form());
}

Программа также работает как плагин другого приложения и запускается, в данном случае, через COM. Проблема в том, что вызывающее приложение (клиент COM) не вызывает EnableVisualStyles и находится вне моего контроля. В этом случае программа запускается следующим образом:

public static void StartAsPlugin() {
   Application.EnableVisualStyles();
   Form form = new Form();
   form.ShowDialog();
}

Когда программа запускается как плагин, индикаторы выполнения и поля со списком не отображаются в том же стиле, что и при обычном запуске программы, а кнопки, флажки и переключатели в порядке. Есть ли способ принудительно установить визуальный стиль? Я пробовал с манифестом, но безуспешно! Вот манифест, который я пробовал:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="*"
    name="RealApp"
    type="win32"
/>
<description>Your application description here.</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>

Я думаю, что манифест встраивается правильно, потому что ildasm показывает следующее в разделе манифеста:

.mresource public RealApp.RealApp.exe.manifest
{
  // Offset: 0x000004F0 Length: 0x0000029B
}

Спасибо , Stenio

6
задан stenio 28 November 2011 в 17:50
поделиться