PyWin32使用MakePy实用程序和win32com来获取networking统计信息

这个问题是对我以前的问题的继续。

我正在尝试使用PyWin32获取我的Windows 7系统的Network Statistics

我遵循的步骤是:

1)运行COM MakePy utility并在network list manager 1.0 type library下selectnetwork list manager 1.0 type librarytypes库。

2)上面的过程生成了这个python文件 。

接下来我创build了类NetworkListManager(CoClassBaseClass)使用对象

 import win32com.client as wc obj = wc.Dispatch("{DCB00C01-570F-4A9B-8D69-199FDBA5723B}") 

现在我试图访问由上面创build的对象obj提供的方法。

help(obj)给了我

GetNetwork(self,gdNetworkId = <PyOleEmpty object>

 Get a network given a Network ID. 

已连接

 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) 

我也尝试使用pythoncom.Empty创buildPyOleEmpty object ,并将其作为parameter passing,但没有运气。

我明白GetNetwork需要NetworkID作为参数,但方法GetNetworkId在INetwork类中定义。

所以我的问题是如何使用不使用MakePy utility创build的python文件中定义的类。

Solutions Collecting From Web of "PyWin32使用MakePy实用程序和win32com来获取networking统计信息"

它看起来像到达网络对象的方式是使用GetNetworks枚举它们:

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

使用网络ID将是有问题的。 他们被定义为原始结构,所以他们将需要通过使用记录。 Pywin32对IRecordInfo接口的支持仍然有点弱。