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').在线等解决方案!!!

解决方案 »

  1.   

    Type apptype = Type.GetTypeFromProgID("InDesign.Application.CS5_J", false);
    改为:
    Type apptype = Type.GetType("InDesign.Application.CS5_J");如果不是当前程序集的
    Type apptype = Type.GetTypeFromProgID("InDesign.Application.CS5_J,程序集名(不含.dll)");
      

  2.   

    主要是这句:
    indesignApp = (InDesignCS5.Application)Activator.CreateInstance(apptype);
    Activator.CreateInstance(apptype)这个表达式已经产生实例了,但是在Win7下强类型转换失败了(Windows XP下转换成功的)。