2012-04-02 5 views
1

Diese Frage ist in Fortsetzung zu meinem previous question.PyWin32 mit MakePy-Dienstprogramm und win32com, um Netzwerk-Statistiken zu erhalten

Ich versuche, Network Statistics für meine Windows 7 System mit PyWin32 zu bekommen.

Die Schritte, die ich gefolgt:

1) Führen Sie COM MakePy utility und als network list manager 1.0 type library unter Typbibliothek auswählen.

2) Der obige Prozess erzeugte diese python file.

Weiter habe ich das Objekt der Klasse NetworkListManager(CoClassBaseClass) mit

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

Jetzt versuche ich die Methoden, durch die oben erstellte Objekt zur Verfügung gestellt für den Zugriff auf obj.

help(obj) gab mir

GetNetwork (self, gdNetworkId = <PyOleEmpty object>)

Get a network given a Network ID. 

IsConnected

Returns whether connected to internet or not 

//Other methods removed 

So, jetzt, wenn ich

verwenden
>>> obj.IsConnected 
True 

Es funktioniert gut.

nun das Problem, das ich bin vor, wie GetNetowrk Methode verwenden, denn wenn ich es

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

verwenden auch versuchen, habe ich versucht, PyOleEmpty object Schaffung von pythoncom.Empty mit und gab sie als paremeter aber kein Glück.

Ich verstehe GetNetwork erfordern NetworkID als Parameter, aber die Methode GetNetworkId ist in INetwork Klasse definiert.

Also meine Frage ist, wie Klassen verwendet in der Python-Datei mit MakePy utility, die nicht sind.

Antwort

2

Es ist wie die Art und Weise sieht die Netzwerkobjekte zu erhalten, ist sie mit GetNetworks aufzuzählen:

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

Mit Hilfe der Netzwerk-IDs problematisch werden. Sie sind als rohe Strukturen definiert, daher müssen sie mit Records übergeben werden. Pywin32s Unterstützung für die IRecordInfo-Schnittstelle ist immer noch etwas schwach.

+0

Schön, es hat funktioniert, aber ich frage mich, wie Sie es herausgefunden haben. – RanRag

Verwandte Themen