首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python ActiveX自动化

Python ActiveX自动化
EN

Stack Overflow用户
提问于 2012-08-20 14:04:23
回答 3查看 6.3K关注 0票数 0

我试图使用ActiveX自动化与python来控制音频精度ATS-2。我使用的是pywin32 32位Windows和Python2.7.

我安装了音频精密软件。然后我使用makepy实用程序,它在列表中找到了Audio精度,并为它创建了一个包装器。一切都进行得很顺利,直到我试图调用调度函数,我被卡住了。

从我在网上找到的指南,

代码语言:javascript
复制
win32com.client.Dispatch("Excel.Application")

我应该在写"Excel.Application“的区域放什么?

我怎么能找到这个?

当我使用OLE/COM对象查看器时,我在类型库中看到了Audio精确条目,但我不确定其中的信息对我有什么帮助。

我一个人尝试过很少的事情,但几乎没有结果。我得到的最好结果是,当我在调度函数中输入CLSID时,我在创建的包装对象makepy中找到了这个函数。

代码语言:javascript
复制
win32com.client.Dispatch("{80EC6E76-D94F-48EB-8F4C-05BDD7850BF1}")

这给了我以下错误:

代码语言:javascript
复制
    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)

我有:

  • 在注册表下查看,并且ID确实没有在任何地方注册。有很少的音频精确条目,但似乎它没有任何东西可以解决这个问题。
  • 试图重新安装音频精确软件,但没有帮助。
  • 试图将dll对象注册在(ATS 1.60)软件中,但都出现了错误,并且都没有注册(我怀疑这不是我需要注册的正确对象)

我怎么才能解决这个问题?

EN

回答 3

Stack Overflow用户

发布于 2012-09-20 15:26:03

解决这一问题的可能方法:

  • 确定要调用的Audio Precision -2 dll。例如。"C:\path\my.dll“
  • 现在转到注册表并查找"C:\path\my.dll“。您将在周围找到一些东西,但是您真正想要的是CLSID.\InprocServer32 32文件夹中的一个条目,或者类似的内容。
  • 还有一个ProgID条目,类似于"AudioPrecison.ATS2“
  • 现在在Python中尝试win32com.client.Dispatch("AudioPrecison.ATS2")
票数 3
EN

Stack Overflow用户

发布于 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示例一样访问它,就像在其他语言中一样。

票数 1
EN

Stack Overflow用户

发布于 2014-01-22 20:06:55

我也有过同样的问题。我不知道从哪里可以得到它,从我可以收集到的是由CoClass程序创建的makepy名称(我认为它是dll的包装器)(也许我错了)。在我通过@NotAUser读取了answer之后,我找到了它,但是当我检查由makepy程序创建的文件时,就在最后一个类之前(如果创建了多个类),我发现了以下内容:

代码语言:javascript
复制
from win32com.client import CoClassBaseClass
# This CoClass is known by the name 'ZKFPEngXControl.ZKFPEngX'
class ZKFPEngX(CoClassBaseClass): # A CoClass

所以,在同一个文件中,有我需要使用的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12039174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档