Python PyWin32使用MakePy实用程序和Win32 COM获取网络统计信息

Python PyWin32使用MakePy实用程序和Win32 COM获取网络统计信息,python,windows,pywin32,Python,Windows,Pywin32,这个问题是我继续提出的 我正在尝试使用PyWin32获取我的windows7系统的网络统计信息 我遵循的步骤是: 1) 运行COM MakePy实用程序,然后选择网络列表管理器1.0 类型库下的类型库 2) 上面的过程生成了这个 接下来,我使用 import win32com.client as wc obj = wc.Dispatch("{DCB00C01-570F-4A9B-8D69-199FDBA5723B}") 现在我正在尝试访问上面创建的对象obj提供的方法 帮助(obj)给了我 G

这个问题是我继续提出的

我正在尝试使用
PyWin32
获取我的
windows7
系统的
网络统计信息

我遵循的步骤是:

1) 运行
COM MakePy实用程序
,然后选择
网络列表管理器1.0
类型库下的类型库

2) 上面的过程生成了这个

接下来,我使用

import win32com.client as wc
obj = wc.Dispatch("{DCB00C01-570F-4A9B-8D69-199FDBA5723B}")
现在我正在尝试访问上面创建的对象obj提供的方法

帮助(obj)
给了我

GetNetwork(self,gdNetworkId=

断开连接

Returns whether connected to internet or not

//Other methods removed
所以,现在当我使用

>>> obj.IsConnected
True
它很好用

现在我面临的问题是如何使用
GetNetowrk
方法,因为当我尝试使用它时

>>> obj.GetNetwork()
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
      ret = self._oleobj_.InvokeTypes(2, LCID, 1, (9, 0), ((36, 1),),gdNetworkId
com_error: (-2147024809, 'The parameter is incorrect.', None, None)
obj.GetNetwork() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ret=self.\uOleObj.\uInvokeTypes(2,LCID,1,(9,0),((36,1),),gdNetworkId com_错误:(-2147024809,'参数不正确',无,无)
我还尝试使用
pythoncom.Empty
创建
PyOleEmpty对象,并将其作为参数传递,但没有成功

我理解
GetNetwork
需要
NetworkID
作为参数,但方法
GetNetworkId
是在类中定义的


因此,我的问题是如何使用python文件中定义的类,这些类是使用
MakePy实用工具创建的,它们不是
CoClass

,看起来访问网络对象的方法是使用GetNetworks枚举它们:

networks=obj.GetNetworks(win32com.client.constants.NLM_ENUM_NETWORK_CONNECTED)
for network in networks:
    print (network.GetName(), network.GetDescription())

使用网络ID会有问题。它们被定义为原始结构,因此需要使用记录进行传递。Pywin32对IRecordInfo接口的支持仍然有点弱。

很好,但我想知道您是如何解决的。
networks=obj.GetNetworks(win32com.client.constants.NLM_ENUM_NETWORK_CONNECTED)
for network in networks:
    print (network.GetName(), network.GetDescription())