PyWin32 использует утилиту MakePy и win32com для получения статистики сети - PullRequest
1 голос
/ 02 апреля 2012

Этот вопрос является продолжением моего предыдущего вопроса .

Я пытаюсь получить Network Statistics для моей Windows 7 системы, используя PyWin32.

Шаги, за которыми я следовал:

1) Запустите COM MakePy utility и выберите network list manager 1.0 type library в библиотеке типов.

2) Вышеупомянутый процесс сгенерировал этот файл python .

Затем я создал объект класса NetworkListManager(CoClassBaseClass), используя

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

Теперь я пытаюсь получить доступ к методам, предоставленным выше созданным объектом obj.

help(obj) дал мне

GetNetwork (self, gdNetworkId = <PyOleEmpty object>)

Get a network given a Network ID.

IsConnected

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)

Я также попытался создать PyOleEmpty object с помощью pythoncom.Empty и передал его как пареметр, но не повезло.

Я понимаю, GetNetwork требует NetworkID в качестве параметра, но метод GetNetworkId определен в INetwork class.

Так что мой вопрос в том, как использовать классы, определенные в файле python, созданном с использованием MakePy utility, которые не CoClass.

1 Ответ

2 голосов
/ 04 апреля 2012

Похоже, что путь к объектам сети - это перечислить их с помощью GetNetworks:

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

Использование сетевых идентификаторов будет проблематичным. Они определены как необработанные структуры, поэтому их нужно будет передавать с использованием записей. Поддержка Pywin32 интерфейса IRecordInfo все еще несколько слабая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...