gpt4 book ai didi

python - 从 PyIDispatch 调用方法

转载 作者:行者123 更新时间:2023-11-30 23:40:43 29 4
gpt4 key购买 nike

我必须从具有描述的 COM API 获取事件:

HRESULT OnStatusMessage(
[in] IDispatch* pStatusMessage
);

并且IStatusMessage具有属性:BSTR描述、LONG代码等。

我的代码不起作用:

import msvcrt
import pythoncom
from win32com.client import DispatchWithEvents

class evt(object):
def OnConnectionLost(self):
print 'method ConnectionLost'
def OnStatusMessage(self, s):
print 'method OnStatusMessage: ' + str(s.Description)
def OnLogin(self, l):
print 'method OnLogin:', l
def OnMessage(self, msg):
print 'method OnMessage'


session = DispatchWithEvents("NiApi.SrvrSession", evt)
# login settings....

session.Connect()

while 1:
if msvcrt.kbhit():
msvcrt.getch()
session.Disconnect()
break
pythoncom.PumpWaitingMessages()

模块因回溯而失败:

Traceback (most recent call last):
File "C:\Python\AP_272\lib\site-packages\win32com\server\policy.py", line 277, in _Invoke_
return self._invoke_(dispid, lcid, wFlags, args)
File "C:\Python\AP_272\lib\site-packages\win32com\server\policy.py", line 282, in _invoke_
return S_OK, -1, self._invokeex_(dispid, lcid, wFlags, args, None, None)
File "C:\Python\AP_272\lib\site-packages\win32com\server\policy.py", line 585, in _invokeex_
return func(*args)
File "d:\niapi.py", line 13, in OnStatusMessage
print 'method OnStatusMessage' + str(s.Description)
AttributeError: 'PyIDispatch' object has no attribute 'Description'
pythoncom error: Python error invoking COM method.

为什么我无法获取此属性?

最佳答案

我找到了答案here :

需要分派(dispatch)此对象:

message = Dispatch(s)
print 'method OnStatusMessage', str(message.Description)

并且不要忘记导入Dispatch

from win32com.client import Dispatch

关于python - 从 PyIDispatch 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12424049/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com