Печать идентификаторов управления для Центра управления сетями и общим доступом - PullRequest
0 голосов
/ 17 октября 2018

Я ищу способ, как изменить IP-адрес сетевого адаптера с помощью сценария.Я пытаюсь Pywinauto.

Мне удалось открыть Центр управления сетями и общим доступом из панелей управления Windows.Сейчас я ищу способ щелкнуть ссылку «Изменить настройки адаптера», чтобы получить список моих сетевых адаптеров:

Screenshot highlighting the window element I am trying to click on

Поэтому я попытался напечататьуправляющие идентификаторы этого окна: .print_control_identifiers()

import pywinauto

network_cpl = pywinauto.Application(backend="uia").start('control /name Microsoft.NetworkAndSharingCenter')
dlg = network_cpl["Network and Sharing Center"]
dlg.print_control_identifiers()

Я проверил в консоли отладки в реальном времени, что dlg на самом деле является диалогом network_cpl:

network_cpl
<pywinauto.application.Application object at 0x000000000476FDD8>
actions:<pywinauto.actionlogger._StandardLogger object at 0x0000000003BCE630>
backend:<pywinauto.backend.BackEnd object at 0x000000000539B208>
match_history:[]
process:7888
use_history:False
xmlpath:''


dlg
<pywinauto.application.WindowSpecification object at 0x0000000003C0C828>
WAIT_CRITERIA_MAP:{'active': ('is_active',), 'enabled': ('is_enabled',), 'exists': ('exists',), 'ready': ('is_visible', 'is_enabled'), 'visible': ('is_visible',)}
actions:<pywinauto.actionlogger._StandardLogger object at 0x0000000003BCE828>
backend:<pywinauto.backend.BackEnd object at 0x000000000539B208>
criteria:[{'backend': 'uia', 'best_match': 'Network and Sharing Center', 'process': 7888}]

Iобратите внимание, что идентификатор процесса dlg объекта WindowsSpecification совпадает с идентификатором процесса network_cpl объекта приложения.Тем не менее, когда я выполняю dlg.print_control_identifiers(), я получаю это:

Exception has occurred: pywinauto.findwindows.ElementNotFoundError
{'best_match': 'Network and Sharing Center', 'backend': 'uia', 'process': 7888}

1 Ответ

0 голосов
/ 21 октября 2018

Это типичная проблема, когда процесс запуска порождает дочерний процесс.В будущем планируется автоматическое обнаружение процессов нереста. В настоящее время вы можете использовать

network_cpl.connect(title="Network and Sharing Center")

после запуска приложения.Или получить к нему доступ через Desktop объект:

>>> from pywinauto import Desktop, Application

>>> network_cpl = Application(backend="uia").start('control /name Microsoft.NetworkAndSharingCenter')
>>> network_cpl.process
9652
>>> dlg_desktop = Desktop(backend="uia")["Network and Sharing Center"]
>>> found_dlg = dlg_desktop.wrapper_object()
>>> found_dlg.process_id()
15520
...