プログラムから [ローカル エリア接続] プロパティ ダイアログ ([ネットワーク] と [共有] の 2 つのタブがあるダイアログ) を表示する必要があります。
どうすればそれができますか?
今、私はこの関数を使用します:
void ShowPropertiesDialog(INetConnection * pConn)
{
HRESULT hr = S_OK;
CLSID clsid;
CComPtr<INetCfg> pNetCfg;
if (SUCCEEDED(pConn->GetUiObjectClassId(&clsid)))
{
CComPtr<IUnknown> pUnk;
if(SUCCEEDED(pUnk.CoCreateInstance(clsid)))
{
CComPtr<INetConnectionPropertyUi> pNetConnectionPropertyUi;
hr = pUnk->QueryInterface(IID_INetConnectionPropertyUi, (void**)&pNetConnectionPropertyUi);
hr = pNetConnectionPropertyUi->SetConnection(pConn);
hr = pNetCfg.CoCreateInstance(CLSID_CNetCfg);
if (SUCCEEDED(hr))
{
CComPtr<INetCfgLock> pNetCfgLock;
hr = pNetCfg->QueryInterface(IID_INetCfgLock, (void**)&pNetCfgLock);
if (SUCCEEDED(hr))
{
hr = pNetCfgLock->AcquireWriteLock(15000, TEXT("MY CLIENT"), NULL);
if (SUCCEEDED(hr))
{
hr = pNetCfg->Initialize(NULL);
if (SUCCEEDED(hr))
{
CComPtr<INetCfgComponent> pTcpIp;
if (SUCCEEDED(pNetCfg->FindComponent(NETCFG_TRANS_CID_MS_TCPIP, &pTcpIp)))
{
hr = pTcpIp->RaisePropertyUi(GetConsoleWindow(), NCRP_SHOW_PROPERTY_UI, pNetConnectionPropertyUi);
}
pNetCfg->Uninitialize();
}
pNetCfgLock->ReleaseWriteLock();
}
}
pNetCfg.Release();
}
}
}
}
使用する:
hr = pENConnection->Next(1, &pConn, &ulCount);
....
hr = pConn->GetProperties(&pProps);
if (pProps->MediaType == NCM_LAN)
{
ShowPropertiesDialog(pConn);
}
しかし、RaisePropertyUi
常に返されますE_NOINTERFACE
:(
ありがとう。