使用MakePy实用程序和win32com获取网络统计信息的PyWin32

2024-10-01 17:23:24 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题接我的previous question。在

我正在尝试使用PyWin32为我的Windows 7系统获取{}。在

我遵循的步骤是:

1) Run COM MakePy utility and than select network list manager 1.0 type library under type library.

2) Above process generated this python file.

接下来,我使用

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

现在我尝试访问上面创建的对象obj提供的方法。在

help(obj)给了我

GetNetwork(self,gdNetworkId=<PyOleEmpty object>

^{pr2}$

已断开连接

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创建PyOleEmpty object,并将其作为参数传递,但没有运气。在

我知道GetNetwork需要NetworkID作为参数,但是方法GetNetworkId是在INetwork类中定义的。在

所以我的问题是如何使用python文件中定义的类,这些类不是CoClass,而是使用MakePy utility创建的。在


Tags: 方法selfnoneobj定义objecttypelibrary
1条回答
网友
1楼 · 发布于 2024-10-01 17:23:24

访问网络对象的方法似乎是使用GetNetworks枚举它们:

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

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

相关问题 更多 >

    热门问题