我正在做Vsto excel外接程序,我正在通过CreateWindowRect()获取窗口rect。
我正在使用ISO Office2016 excel和Office365 Excel运行应用程序。
问题是,在运行ISO office2016 excel时,我得到了一个不同的窗口矩形,在使用office365excel运行应用程序时,我必须得到正确的窗口矩形。
因此,我计划调整窗口矩形,同时运行应用程序与国际标准化组织office2016 excel。要检查这种情况,我需要了解excel是独立的还是office365 excel。
是否有任何方法可以使用c#?来查找Excel应用程序是单击到运行(OnlineOffice365安装程序)还是Windows (ISO文件或DVD)?
发布于 2020-04-15 18:58:31
计算机可以有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;
}您可以结合上面的代码来获得所需的内容。希望能帮上忙!
这两种代码都是根据以下答案生成的:link
https://stackoverflow.com/questions/61227720
复制相似问题