Я пробовал копаться в документации Microsoft Learn, связанной с интерфейсами COM-интерфейсов конфигурации сети, и наиболее близким совпадением был INetCfgComponent::RaisePropertyUi, но это открывает определенные настройки компонента сети, что является ошибкой — они на один уровень глубже, чем требуется. Именно это и делает код из неотвеченного вопроса 15901907.
Затем я решил поискать недокументированные интерфейсы Windows и наткнулся на GUID {C08956A4-1CD3-11D1-B1C5-00805FC1270E известный как INetConnectionPropertyUi, который отсутствует в реестре в кусте HKCR, но доступен через CoCreateInstance. Я думал, что это будет успешным с помощью следующего кода (полный файл можно увидеть здесь):
Код: Выделить всё
hr = pNetCCPui->AddPages(NULL, PropSheetExCallback, reinterpret_cast(&pinfo));
if (SUCCEEDED(hr))
{
if (PropertySheetW(&pinfo) < 0)
hr = E_FAIL;
}
Сегодня у меня возникла идея получить желаемое окно через ShellExecute, думая, что оно доступно через определенный CLSID. Я был недалеко от целевого поведения — я добрался по крайней мере до окна состояния адаптера, но опять же промах — на этот раз на один уровень мелкий, чем требовалось:
Код: Выделить всё
shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}\{network adapter GUID}
Я ищите способы открытия диалогового окна свойств адаптера, которые не являются:
- симуляцией действий пользователя, поскольку они могут быть потенциально видимыми и мешать работе (например, AHK или SendMessageW) )
- переписывание почти половины netshell.dll в собственную dll, чтобы включить диалоговое окно свойств адаптера.
[*]взаимодействие с COM, может быть, я пропустил интерфейс, который действительно работает?
[*]
Код: Выделить всё
ShellExecute
[*]все, что не включает в себя ncpa.cpl.
Подробнее здесь: https://stackoverflow.com/questions/784 ... indows-api