从Excel应用程序对象中查找位(32位/ 64位)?

是否有可能确定Excel是否从Microsoft.Office.Interop.Excel.ApplicationClass运行在32位或64位?

编辑
该解决scheme适用于Excel 2010和Excel 2007

这段代码应该给你Excel的“位”。

Microsoft.Office.Interop.Excel.ApplicationClass app = new Microsoft.Office.Interop.Excel.ApplicationClass(); if (System.Runtime.InteropServices.Marshal.SizeOf(app.HinstancePtr) == 8) { // excel 64-bit } else { // excel 32-bit } 

编辑:这是另一个版本,应该也适用于以前版本的Excel。 只需将一个ApplicationClass引用传递给它:

  public static ExcelVersion GetExcelVersion(object applicationClass) { if (applicationClass == null) throw new ArgumentNullException("applicationClass"); PropertyInfo property = applicationClass.GetType().GetProperty("HinstancePtr", BindingFlags.Instance | BindingFlags.Public); if (property == null) return ExcelVersion.Excel; return (System.Runtime.InteropServices.Marshal.SizeOf(property.GetValue(applicationClass, null)) == 8) ? ExcelVersion.Excel2010_64 : ExcelVersion.Excel2010_32; } public enum ExcelVersion { Excel, // before 2010, so 32 bits Excel2010_32, Excel2010_64 }