使用python 64bit win32com(Solidworks-API)时发生异常:Exception SldWorks.Application.InvokeTypes

时间:2012-11-20 15:52:31

标签: python 64-bit win32com solidworks

我的Windows Server 2003,标准x64版本是64位Python 2.7(python-2.7.3.amd64.msi)和64位win32-Extension(pywin32-218.win-amd64-py2.7。可执行程序)。 我的应用程序是SolidWorks 2012 x64 Edition。 然后我用

生成
C:\Python27\Lib\site-packages\win32com\client\makepy.py "D:\Program Files\SolidWorks Corp\SolidWorks\sldworks.tlb" the file 83A33D31-27C5-11CE-BFD4-00400513BB57x0x20x0.py 

C:\Python27\Lib\site-packages\win32com\client\makepy.py "D:\Program Files\SolidWorks Corp\SolidWorks\swconst.tlb" the file 4687F359-55D0-4CD3-B6CF-2EB42C11F989x0x20x0.py

我的以下代码在32位Windowes XP上使用32位Python 2.4和32位win32-Extension正常工作。 但是在我的64位服务器上,通过调用ExitApp() - 方法得到异常“SldWorks.Application.InvokeTypes”。 是什么原因,我该如何解决这个问题? 谢谢你的提示,托马斯

 try:

        pythoncom.CoInitializeEx(pythoncom.COINIT_APARTMENTTHREADED)

        sldworks = gencache.EnsureModule('{83A33D31-27C5-11CE-BFD4-00400513BB57}', 0x0, 20, 0) 
        print "sldworks = " + str(sldworks)       
        swconst = gencache.EnsureModule('{4687F359-55D0-4CD3-B6CF-2EB42C11F989}', 0x0, 20, 0) 
        print "swconst = " + str(swconst)   


        sw = sldworks.ISldWorks(DispatchEx('SldWorks.Application'))  
        print "sw = " + str(sw)   

        sw.ExitApp() 

    except Exception, value:        
        print "Exception occured, value = ", value 

这里是印刷品:

sldworks = module 'win32com.gen_py.83A33D31-27C5-11CE-BFD4-00400513BB57x0x20x0' from 'C:\Python27\lib\site-packages\win32com\gen_py\83A33D31-27C5-11CE-BFD4-00400513BB57x0x20x0.pyc'  

swconst = module 'win32com.gen_py.4687F359-55D0-4CD3-B6CF-2EB42C11F989x0x20x0' from 'C:\Python27\lib\site-packages\win32com\gen_py\4687F359-55D0-4CD3-B6CF-2EB42C11F989x0x20x0.pyc'        

sw = win32com.gen_py.SldWorks 2012 Type Library.ISldWorks instance at 0x82548360  

Exception occured, value = SldWorks.Application.InvokeTypes 

1 个答案:

答案 0 :(得分:0)

使用

sw = win32com.client.Dispatch("SldWorks.Application")

代替

sw = sldworks.ISldWorks(DispatchEx('SldWorks.Application'))

和 使用Python 2.4 32位和win32扩展32位 它会罚款。

托马斯

Diesen Beitrag meldenBeitraglöschen