我使用win32com.client
从中开发的自定义COM对象读取数据VB.Net版. 你知道吗
通过下面的代码,我可以读取字符串结果
>>> import win32com.client
>>> cstApp = win32com.client.Dispatch("CustomLib.CSTApp")
>>> string = cstApp.GiveMeTestString()
>>> print(type(string))
<class 'str'>
>>> print("Test String: {0}".format(string))
Test String: Well done! I come from COM Object
我现在有了一个方法VB.Net版Dictionary类型,但是当我试图从python脚本读取它时,我得到了一个PyIUknown类型,我无法读取它的值
>>> username = 'artur'
>>> resultset = cstApp.OpenTaskforUser(username)
>>> print(type(resultset))
<class 'PyIUnknown'>
>>> print(resultset)
<PyIUnknown at 0x0000003C47ABAC30 with obj at 0x0000003C47EAFF18>
如何读取数据?你知道吗
否则,我需要使用哪种类型VB.Net版能够从win32com
读取包含词典的Python列表吗?你知道吗
谢谢你的帮助。你知道吗
经过一周的工作,我已经更好地理解了
win32com
的工作原理和Python对COM接口的支持,所以我想分享一下我用来避免出现这个问题的解决方法。你知道吗<强>1。首先,PyIUnknown不是一个错误。IUnknown接口是从中派生所有其他接口的根接口。IUnknown(以及PyIUnknown)可以通过
QueryInterface
方法来使用<强>2。另一方面,并非所有Python类型都映射到COM接口中。所以IDictionary就是其中之一。这就是为什么我得到PyIUnknown结果。[2]
3岁。在Python中轻松使用COM接口有助于生成映射库中所有可用接口的静态代理类。有不同的方法来做这个活动。在前面的步骤中,我使用了
makepy
方法。然后我用了EnsureDispatch
一个。[3]最后的解决方法是避免第1点的问题。和2.,是要求定制API COM开发人员将返回的类型从IDictionary更改为JSON字符串。你知道吗
这样我就得到了一个易于使用的Python字典。你知道吗
我希望这个答案能帮助其他人。你知道吗
相关问题 更多 >
编程相关推荐