Как определить, является ли приложение Excel «нажми и работай» (онлайн-установщик Office365) или Windows установщик (файл ISO или DVD), используя c# - PullRequest
0 голосов
/ 15 апреля 2020

Я работаю над надстройкой Vsto excel, и я получаю прямоугольник окна через CreateWindowRect ().

Я запускаю приложение с Excel Office2016 Excel и Office365 excel.

Проблема в том, что я получаю другой прямоугольник окна при запуске ISO office2016 Excel, и мне нужно получить правильный прямоугольник окна при запуске приложения с office365excel.

Так что я планирую настроить прямоугольник окна при запуске приложения с ISO office2016 excel. Чтобы проверить состояние, в котором я нуждаюсь, выясняю, является ли Excel автономным или Office365 Excel.

Есть ли какой-нибудь способ узнать, является ли приложение Excel «нажми и работай» (установщик Online Office 365) или Windows Установщик (файл ISO или DVD) с использованием c#?

1 Ответ

0 голосов
/ 15 апреля 2020

На компьютере может быть несколько версий Office.

Но вы можете узнать, установлен ли на компьютере Office 365, что-то вроде этого:

using Microsoft.Win32;
...

private bool Has365Office()
{
     RegistryView registryView = RegistryView.Registry32;
     string registryKey = "Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext";
     using (RegistryKey key = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, registryView).OpenSubKey(registryKey))
     {
           foreach (string subkeyName in key.GetValueNames())
           {
                if (subkeyName.Contains("o365"))
                    return true;
           }
     }

     return false;
}
...

Чтобы узнать, какая версия работает, или, по крайней мере, будет работать, когда пользователь откроет его, вы можете сделать что-то вроде этого:

using Microsoft.Office.Interop;
...

public string GetOfficeVersion()
    {
        string sVersion = string.Empty;
        Microsoft.Office.Interop.Word.Application appVersion = new Microsoft.Office.Interop.Word.Application();
        appVersion.Visible = false;
        switch (appVersion.Version.ToString())
        {
            case "7.0":
                sVersion = "95";
                break;
            case "8.0":
                sVersion = "97";
                break;
            case "9.0":
                sVersion = "2000";
                break;
            case "10.0":
                sVersion = "2002";
                break;
            case "11.0":
                sVersion = "2003";
                break;
            case "12.0":
                sVersion = "2007";
                break;
            case "14.0":
                sVersion = "2010";
                break;
            case "16.0":
                sVersion = "2016 or 2019 or 365";
                break;
            default:
                sVersion = "Too Old!";
                break;
        }
        return sVersion;
    }

Вы можете комбинировать код выше, чтобы получить то, что вам нужно. Я надеюсь, что это поможет!

оба кода были сделаны из этого ответа: ссылка

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