在此之前确定 VSTO 4 中的 Office 版本.应用程序已设置


我想

在 VSTO 加载项上调用 CreateRibbonExtensibilityObject() 时确定 VSTO 加载项中的 Office/Excel 版本。我遇到了这个问题,并遇到了:

  • 插件的this.Applicationnull,目前VSTO尚未设置。
  • ThisAddIn_Startup(..)CreateRibbonExtensibilityObject()之后调用。

this.Application.Version尚不可用,因为加载项目前似乎尚未初始化。有没有办法在 VSTO 运行时调用外接程序CreateRibbonExtensibilityObject()时确定 Excel 的版本(12、14 或 15)?

更新

发现 ItemProvider 已实例化后,我使用以下方法获取主要的办公版本。

FieldInfo temp = this.ItemProvider.GetType().GetField("_officeVersion", BindingFlags.NonPublic | BindingFlags.Instance);
uint officeVersion = (uint)temp.GetValue(this.ItemProvider);

我也接受SliverNinja的回答。

您可以使用

System.Diagnostics访问当前正在运行的Office进程(excel.exe),获取进程文件名的路径(MainModule),然后使用FileInfoVersion来确定主要产品版本。

int majorVersion = FileVersionInfo.GetVersionInfo(Process.GetCurrentProcess().MainModule.FileName).ProductMajorPart;

我正在使用MainModuleFileVersionInfo。我希望这样可以节省文件访问权限以提取版本信息。

int majorVersion = Process.GetCurrentProcess().MainModule.FileVersionInfo.ProductMajorPart;

相关内容

  • 没有找到相关文章

最新更新