私の Windows Server 2003、Standard x64 Edition には、64 ビットの Python 2.7 (python-2.7.3.amd64.msi) と 64 ビットの win32-Extension (pywin32-218.win-amd64-py2.7.exe) があります。私のアプリケーションは 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 ビット Python 2.4 および 32 ビット win32-Extension を搭載した 32 ビット Windows XP で正常に動作します。しかし、私の 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