首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Office365查找excel应用程序是单击到运行(联机c#安装程序)还是Windows (ISO文件或DVD)?

如何使用Office365查找excel应用程序是单击到运行(联机c#安装程序)还是Windows (ISO文件或DVD)?
EN

Stack Overflow用户
提问于 2020-04-15 11:37:47
回答 1查看 119关注 0票数 0

我正在做Vsto excel外接程序,我正在通过CreateWindowRect()获取窗口rect。

我正在使用ISO Office2016 excel和Office365 Excel运行应用程序。

问题是,在运行ISO office2016 excel时,我得到了一个不同的窗口矩形,在使用office365excel运行应用程序时,我必须得到正确的窗口矩形。

因此,我计划调整窗口矩形,同时运行应用程序与国际标准化组织office2016 excel。要检查这种情况,我需要了解excel是独立的还是office365 excel。

是否有任何方法可以使用c#?来查找Excel应用程序是单击到运行(OnlineOffice365安装程序)还是Windows (ISO文件或DVD)?

EN

回答 1

Stack Overflow用户

发布于 2020-04-15 18:58:31

计算机可以有Office的多个版本。

但是,您可以发现机器是否安装了Office 365,这样的操作如下:

代码语言:javascript
复制
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;
}
...

要知道哪个版本正在运行,或者至少在用户打开它时会运行,您可以这样做:

代码语言:javascript
复制
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;
    }

您可以结合上面的代码来获得所需的内容。希望能帮上忙!

这两种代码都是根据以下答案生成的:link

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61227720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档