在 Windows 10 64 位上使用 Python 32 位出现 COM 错误
COM error using Python 32 bit on Windows 10 64 bit
我正在尝试使用 odoo 9 代码中的 windows dll。
python class 中的代码是:
import win32com.client
import pythoncom
Pythoncom.CoInitialize ()
Zk = win32com.client.Dispatch ('zkemkeeper.ZKEM.1')
当我 运行 它在 Windows 8(64 位)上时它工作没有问题,但是当我 运行 它在 Windows 10(64 位)上时服务,我在日志文件中收到以下错误:
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)
我检查了Regedit; dll 已注册。
当我在同一台 PC 上安装 Python 32 位,并直接从控制台 运行 代码时,它给了我同样的错误。但是,我安装了 Python 64 位和 运行 相同的代码,并且运行良好。
谁能告诉我如何使用 odoo 即服务修复此错误?有什么方法可以指向我在 PC 上安装的 64 位 python 而不是内部安装的吗?
尝试使用
添加上下文
clsctx=pythoncom.CLSCTX_LOCAL_SERVER
传递给 Dispatch 的参数。
t = win32com.client.Dispatch("TDApiOle80.TDConnection")
它不适用于此。
tdc = win32com.client.Dispatch("TDApiOle80.TDConnection",clsctx=pythoncom.CLSCTX_LOCAL_SERVER)
调度
派遣,
userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
我正在尝试使用 odoo 9 代码中的 windows dll。 python class 中的代码是:
import win32com.client
import pythoncom
Pythoncom.CoInitialize ()
Zk = win32com.client.Dispatch ('zkemkeeper.ZKEM.1')
当我 运行 它在 Windows 8(64 位)上时它工作没有问题,但是当我 运行 它在 Windows 10(64 位)上时服务,我在日志文件中收到以下错误:
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)
我检查了Regedit; dll 已注册。
当我在同一台 PC 上安装 Python 32 位,并直接从控制台 运行 代码时,它给了我同样的错误。但是,我安装了 Python 64 位和 运行 相同的代码,并且运行良好。
谁能告诉我如何使用 odoo 即服务修复此错误?有什么方法可以指向我在 PC 上安装的 64 位 python 而不是内部安装的吗?
尝试使用
添加上下文clsctx=pythoncom.CLSCTX_LOCAL_SERVER
传递给 Dispatch 的参数。
t = win32com.client.Dispatch("TDApiOle80.TDConnection")
它不适用于此。
tdc = win32com.client.Dispatch("TDApiOle80.TDConnection",clsctx=pythoncom.CLSCTX_LOCAL_SERVER)
调度
派遣,
userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)