2012-11-20 66 views
1

我在Windows Server 2003標準版x64版本上安裝了一個64位Python 2.7(python-2.7.3.amd64.msi)和一個64位的win32-Extension(pywin32-218.win-amd64-py2.7.exe)。 我的應用程序是SolidWorks 2012 x64版本。 然後我生成在使用python 64bit win32com(Solidworks-API)期間發生異常:異常SldWorks.Application.InvokeTypes

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的擴展。 但是在我的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 
+0

你找到問題的解決方案?我面臨類似的問題。 – coolshashi

回答

0

隨着

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

代替

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

和 與Python 2.4 32B它和win32擴展32bit 它工作罰款。

托馬斯

Diesen表示端硯melden端硯löschen