InDesignCS5.Application indesignApp = null;
Type apptype = Type.GetTypeFromProgID("InDesign.Application.CS5_J", false);
indesignVersion = InDesignCountryVersion.JP;
if (apptype == null)
{
apptype = Type.GetTypeFromProgID("InDesign.Application.CS5", false);
indesignVersion = InDesignCountryVersion.EN;
}
if (apptype == null)
indesignApp = null;
if (apptype != null)
{
indesignApp = (InDesignCS5.Application)Activator.CreateInstance(apptype);
}
在VS2010,net4.0环境下,
indesignApp = (InDesignCS5.Application)Activator.CreateInstance(apptype);
WinXP可以正确执行,Win7 32位下却抛出类型转换异常(Unable to cast COM object of tyep 'System._ComObject' to interface type 'InDesignCS5.Application').在线等解决方案!!!
Type apptype = Type.GetTypeFromProgID("InDesign.Application.CS5_J", false);
indesignVersion = InDesignCountryVersion.JP;
if (apptype == null)
{
apptype = Type.GetTypeFromProgID("InDesign.Application.CS5", false);
indesignVersion = InDesignCountryVersion.EN;
}
if (apptype == null)
indesignApp = null;
if (apptype != null)
{
indesignApp = (InDesignCS5.Application)Activator.CreateInstance(apptype);
}
在VS2010,net4.0环境下,
indesignApp = (InDesignCS5.Application)Activator.CreateInstance(apptype);
WinXP可以正确执行,Win7 32位下却抛出类型转换异常(Unable to cast COM object of tyep 'System._ComObject' to interface type 'InDesignCS5.Application').在线等解决方案!!!
改为:
Type apptype = Type.GetType("InDesign.Application.CS5_J");如果不是当前程序集的
Type apptype = Type.GetTypeFromProgID("InDesign.Application.CS5_J,程序集名(不含.dll)");
indesignApp = (InDesignCS5.Application)Activator.CreateInstance(apptype);
Activator.CreateInstance(apptype)这个表达式已经产生实例了,但是在Win7下强类型转换失败了(Windows XP下转换成功的)。