ВСТО - MS Office «Цветовая схема» изменил событие - PullRequest
3 голосов
/ 03 сентября 2010

Как я могу получать уведомления об изменениях цветовой схемы MS Office с помощью VSTO?

Ответы [ 3 ]

6 голосов
/ 11 сентября 2014

Обратите внимание, что (конечно) это было изменено в Office 2013. Вместо этого следует использовать следующие константы:

const string OfficeCommonKey =
  @"Software\Microsoft\Office\15.0\Common";
const string OfficeThemeValueName = "UI Theme";
const int ThemeWhite = 0;
const int ThemeLightGray = 1;
const int ThemeDarkGray = 2;

Обратите внимание, что если тема никогда не была установлена, клавиша "Тема пользовательского интерфейса" не будет существовать. Я считаю, что по умолчанию это "0" (белая тема).

6 голосов
/ 04 сентября 2010

Надеюсь, что-то лучше существует с Office 2010. Вот что я использовал для Office 2007 и Word (Это не уведомление в любом случае, просто что-то проверить):

const string OfficeCommonKey =
  @"Software\Microsoft\Office\12.0\Common";
const string OfficeThemeValueName = "Theme";
const int ThemeBlue = 1;
const int ThemeSilver = 2;
const int ThemeBlack = 3;

using (RegistryKey key = Registry.CurrentUser.OpenSubKey(OfficeCommonKey, false))
{
    int theme = (int)key.GetValue(OfficeThemeValueName,1);

    switch (theme)
    {
        case ThemeBlue:
            //...
            break;
        case ThemeSilver:
            //...
            break;
        case ThemeBlack:
            //...
            break;
        default:
            //...
            break;
   }
}
1 голос
/ 21 апреля 2014

У меня есть код, аналогичный тому, который предоставил Майк Рейган. Еще одна вещь, которую я делаю, - запускаю отдельный поток, который каждую секунду проверяет эту запись реестра. Всякий раз, когда значение реестра меняется, я запускаю пользовательское событие. Остальная часть кода в моей надстройке обрабатывает событие и изменяет элементы пользовательского интерфейса, соответствующие новой теме в этом обработчике событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...