[英]win32com Dispatch the 32 bit version of TestStand
我有一个连接到TestStand的python脚本,并从.seq(序列)文件中检索某些数据。
import win32com.client
import pythoncom
TestStandEngine = win32com.client.Dispatch("TestStand.Engine")
Seqfile = TestStandEngine .GetSequenceFileEx("Seq_File.seq")
Main = Seqfile.GetSequenceByName("MainSequence") #Get's the main sequence of the file
我已经安装了x32和x64版本的Test Stand 2014,脚本运行得很好。 卸载x64版本后(因为不需要它),脚本现在显示此错误:
Traceback (most recent call last):
File "C:\ts\Main.py", line 9, in <module>
TestStandEngine = win32com.client.Dispatch("TestStand.Engine")
File "C:\LegacyApp\Python_2.7\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "C:\LegacyApp\Python_2.7\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:\LegacyApp\Python_2.7\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221005, 'Invalid class string', None, None)
经过一些研究,我认为我知道是什么原因引起的问题,但是我找不到任何解决方法。
-我计算机上的Python安装是32位
>>> import platform
>>> platform.architecture()
('32bit', 'WindowsPE')
-我的计算机上唯一安装的Test Stand是32位版本。
-操作系统:Windows x64位操作系统
这是我的猜测:我认为,当它分派Teststand.Engine时,它将尝试使用不再安装的x64版本。 我尝试通过添加clsctx参数,但结果相同:
win32com.client.Dispatch("TestStand.Engine",clsctx=pythoncom.CLSCTX_LOCAL_SERVER)
有什么办法可以“强制”它启动32位版本? 如果TestStand在32bit上并且Python在32bit上,是否不应该返回应该与python 32bit一起使用的32bit COM对象?
更新:因此,在PowerShell中运行此命令后 ,它返回了所有有效COM名称的列表,但“ Teststand.Engine ”不在列表中。 列表中唯一与TestStand相关的对象是TestStand.ExLauncher(我可以分派,但它的属性/用途与TestStand.Engine不同
通过重新安装TestStand解决了该问题。 (我知道重新安装可以解决问题,但我希望不必重新安装它,因为它会影响多个配置)
问题是,当我卸载TestStand x64版本时,卸载程序认为我将完全卸载TestStand,并且很可能删除了一些包含“ TestStand.Engine”说明的注册表项。重新安装x32位版本后,它可以正常工作。
您是否尝试过使用版本相关的界面,即
TestStandEngine = win32com.client.Dispatch("TestStand.Engine.1")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.