2012-04-02 30 views
1

この質問は、previous questionに続きます。PyWin32 MakePyユーティリティとwin32comを使用してネットワーク統計情報を取得する

私のWindows 7システムでNetwork Statisticsを取得しようとしています。PyWin32です。

私は、その後のステップ:

1)COM MakePy utilityを実行し、タイプライブラリの下network list manager 1.0 type libraryを選択するよりも。プロセス上

2)は、このpython fileを生成しました。

次私は今、私は上記で作成したオブジェクトobjが提供するメソッドにアクセスしようとしています

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

を使用して、クラスNetworkListManager(CoClassBaseClass)のオブジェクトを作成しました。

help(obj)は私に

Returns whether connected to internet or not 

//Other methods removed 

だから、今、私は

を使用するときに接続されている

Get a network given a Network ID. 

GetNetwork(自己、gdNetworkId = <PyOleEmpty object>)を得ました

>>> obj.IsConnected True 

正常に動作します。私は

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

それを使用しようとするので、

今、私が直面しています問題はGetNetowrkメソッドを使用する方法である私はまた、pythoncom.Emptyを使用してPyOleEmpty objectを作成しようとしたparemeterが、運としてそれを渡されました。

私はGetNetworkは、パラメータが、INetworkクラスで定義されているGetNetworkId方法としてNetworkIDを必要と理解しています。

私の質問はMakePy utilityを使って作成されたpythonファイルで定義されたクラスを使用する方法で、CoClassではありません。ネットワークIDが問題になります使用し

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

答えて

2

ネットワークに取得する方法は、オブジェクトのように見えますがGetNetworksを使用してそれらを列挙することです。それらは生の構造体として定義されているので、レコードを使用して渡す必要があります。 Pywin32のIRecordInfoインターフェースのサポートはまだまだ弱いです。

+0

ニースはうまくいったけど、どうやってそれを理解したのだろうと思っていた。 – RanRag

関連する問題