Ich habe auf meinem Windows Server 2003, Standard x64 Edition ein 64 bit Python 2.7 (python-2.7.3.amd64.msi) mit einer 64 bit win32-Extension (pywin32-218.win-amd64-py2.7.exe) installiert.
Die Anwedung, die ich ansteuern möchte ist SolidWorks 2012 x64 Edition.
Folgende Dateien habe ich generiert:
C:\Python27\Lib\site-packages\win32com\client\makepy.py "D:\Program Files\SolidWorks Corp\SolidWorks\sldworks.tlb": 83A33D31-27C5-11CE-BFD4-00400513BB57x0x20x0.py
und
C:\Python27\Lib\site-packages\win32com\client\makepy.py "D:\Program Files\SolidWorks Corp\SolidWorks\swconst.tlb": 4687F359-55D0-4CD3-B6CF-2EB42C11F989x0x20x0.py
Der folgende Code funktioniert auf einer 32 bit Windowes XP Maschine mite einem Python 2.4 (32bit) und einer 32 bit win32-Extension.
Aber auf meinem 64 bit server bekomme ich eine Exception ("SldWorks.Application.InvokeTypes") beim Aufruf der ExitApp()-Methode. Bei jeder anderen Methode auch, ich habe die ExitApp() der einfachheithalber gewählt.
Weiss einer um die Ursache für diesen Fehler und wie man diesen beheben kann?
Vielen Dank für Eure Tips schon mal vorab, Thomas
Code: Alles auswählen
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 = ", valueHier die prints:
Code: Alles auswählen
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 