win32com.client.Dispatch()32-64位程序

时间:2012-07-20 14:57:38

标签: python com 32bit-64bit win32com

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

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

我尝试了2次,首先使用win32 64位安装我的64位python2.6安装。 我能够使导入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位吗? 或者问题可能不是我想的那样,在那种情况下,如果someOne可以让我感到高兴,我会感激不尽,我是一个完全的初学者与com对象:D

(我在Windows 7 64位上)

谢谢!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

试试这个。我不确定这个解决方案
C:\ Windows \ SysWOW64>。\ msiexec.exe / i'应用程序路径'

附加信息为here