我试图使用ActiveX自动化与python来控制音频精度ATS-2。我使用的是pywin32 32位Windows和Python2.7.
我安装了音频精密软件。然后我使用makepy实用程序,它在列表中找到了Audio精度,并为它创建了一个包装器。一切都进行得很顺利,直到我试图调用调度函数,我被卡住了。
从我在网上找到的指南,
win32com.client.Dispatch("Excel.Application")我应该在写"Excel.Application“的区域放什么?
我怎么能找到这个?
当我使用OLE/COM对象查看器时,我在类型库中看到了Audio精确条目,但我不确定其中的信息对我有什么帮助。
我一个人尝试过很少的事情,但几乎没有结果。我得到的最好结果是,当我在调度函数中输入CLSID时,我在创建的包装对象makepy中找到了这个函数。
win32com.client.Dispatch("{80EC6E76-D94F-48EB-8F4C-05BDD7850BF1}")这给了我以下错误:
Traceback (most recent call last):
File "C:\Python27\Lib\site-packages\win32com\gen_py\APtest.py", line 5, in <module>
xlApp = win32com.client.Dispatch("{80EC6E76-D94F-48EB-8F4C-05BDD7850BF1}")
File "C:\Python27\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 108, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 85, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221164, 'Class not registered', None, None)我有:
我怎么才能解决这个问题?
发布于 2012-09-20 15:26:03
解决这一问题的可能方法:
win32com.client.Dispatch("AudioPrecison.ATS2")发布于 2013-08-08 19:59:51
要将pywin32模块与activex类一起使用,您需要生成一个包装文件。为此,请在C:\Python27 27\Lib\site-packages\win32COM\client(或simmilar )中找到您的makepy.py文件。然后运行它,找到您的activex类的名称,然后运行它。它应该在gen_py文件夹C:\Python27 27\Lib\site-packages\win32COM\gen_py中生成一个包装文件,其中包含CLSID。然后,您可以像excel示例一样访问它,就像在其他语言中一样。
发布于 2014-01-22 20:06:55
我也有过同样的问题。我不知道从哪里可以得到它,从我可以收集到的是由CoClass程序创建的makepy名称(我认为它是dll的包装器)(也许我错了)。在我通过@NotAUser读取了answer之后,我找到了它,但是当我检查由makepy程序创建的文件时,就在最后一个类之前(如果创建了多个类),我发现了以下内容:
from win32com.client import CoClassBaseClass
# This CoClass is known by the name 'ZKFPEngXControl.ZKFPEngX'
class ZKFPEngX(CoClassBaseClass): # A CoClass所以,在同一个文件中,有我需要使用的名称。
https://stackoverflow.com/questions/12039174
复制相似问题