python - PyWin32 ved hjælp af MakePy-værktøj og win32com for at få netværksstatistik

Indlæg af Hanne Mølgaard Plasc

Problem



Dette spørgsmål er i forlængelse af mit tidligere spørgsmål.


Jeg forsøger at få Network Statistics til mit Windows 7 system ved hjælp af PyWin32.


De trin jeg fulgte:



  1) Kør COM MakePy utility og end vælg network list manager 1.0 type library under type bibliotek.

  
  2) Over processen genererede denne python-fil. [25]



Derefter skabte jeg objektet til klasse NetworkListManager(CoClassBaseClass) ved hjælp af


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


Nu forsøger jeg at få adgang til metoderne fra det ovenfor oprettede objekt obj.


help(obj) gav mig


GetNetwork (selv, gdNetworkId=<PyOleEmpty object>)


Get a network given a Network ID.


IsConnected


Returns whether connected to internet or not

//Other methods removed


Så nu, når jeg bruger


>>> obj.IsConnected
True


Det virker fint.


Nu er problemet jeg står over for, hvordan man bruger GetNetowrk metode, fordi når jeg forsøger at bruge det


>>> 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)


Jeg forsøgte også at skabe PyOleEmpty object ved at bruge pythoncom.Empty og bestået det som en parameter, men ikke heldige.


Jeg forstår GetNetwork kræver NetworkID som en parameter, men metoden GetNetworkId er defineret i INetwork klasse. [26]


Så mit spørgsmål er, hvordan du bruger klasser defineret i pythonfilen oprettet ved hjælp af MakePy utility, som ikke er CoClass.

Bedste reference


Det ser ud til, at vejen til netværksobjekterne er at opregne dem ved hjælp af GetNetworks:


networks=obj.GetNetworks(win32com.client.constants.NLM\_ENUM\_NETWORK\_CONNECTED)
for network in networks:
    print (network.GetName(), network.GetDescription())


Brug af netværket vil være problematisk. De er defineret som råstrukturer, så de skal bestilles ved hjælp af Records. Pywin32s support til IRecordInfo-grænsefladen er stadig lidt svag.