1

プログラムから [ローカル エリア接続] プロパティ ダイアログ ([ネットワーク] と [共有] の 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:(

ありがとう。

4

0 に答える 0