1

我正在尝试在 python 中使用 win32com 创建一个 com 对象。使用这些命令:

import win32com.client
com_nxn = win32com.client.Dispatch("NxNNamespace.NxNNamespaceHelper")

我尝试了 2 次,首先是我的 64 位 python2.6 安装和 win32 64 位安装。我能够使用 import win32com.client 行。但是 con_nxn 命令仍然不起作用并给我以下错误:

File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 85, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)

pywintypes.com_error: (-2147221164, 'Classe non enregistr\xe9e', None, None)

另一方面,安装了 python 和 win32com 32 位,一切正常,我的 Com 对象已创建。我认为问题在于我要实例化的软件是 32 位的,并且不提供 64 位 Com 对象

所以我的问题是:我怎样才能让它在我的 python 64Bit 上工作?我可以在我的 python 64Bit 上以某种奇怪的方式(复制 dll)使用 win32Com 32 位吗?或者问题可能不是我想的那样,在这种情况下,如果有人能启发我,我将不胜感激,我完全是 com Object 的初学者:D

(我在 Windows 7 64 位)

谢谢!

4

2 回答 2

3

根据对象的实现方式,您可以通过将 clsctx=pythoncom.CLSCTX_LOCAL_SERVER 添加到传递给 Dispatch 的参数来更改激活上下文。如果这不起作用,请为 clsctx 尝试 CLSCTX_ACTIVATE_32_BIT_SERVER (0x40000)。如果这些都不起作用,您仍然可以使用控制面板->管理工具->组件服务为应用程序创建进程外代理。

于 2012-07-20T22:28:11.973 回答
0

尝试这个。我不确定这个解决方案
C:\Windows\SysWOW64>.\msiexec.exe /i ' path of application '

附加信息在这里

于 2016-05-19T07:46:23.350 回答