Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Network issue : Local Area Connection

116 views
Skip to first unread message

Dead kid

unread,
Jan 25, 2003, 11:22:27 PM1/25/03
to
Hi

Is anyone know how to popup Local Area Connection #number
property dialog by Windows C++ or SDK/DDK function ?

Thank you .

Stephan Wolf

unread,
Jan 27, 2003, 9:07:15 AM1/27/03
to
See the description of INetCfgComponent::RaisePropertyUi() in the DDK
docs.

Stephan
---

Bryan S. Burgin [MS]

unread,
Jan 27, 2003, 8:42:31 PM1/27/03
to

Stephan,

Are you sure of this? I'm working with INetCfgComponent::RaisePropertyUI
to inquire (via NCRP_QUERY_PROPERTY_UI) if a bound protocol, client or
service has a UI and, if it does, to show its property page via
NCRP_SHOW_PROPERTY_UI. But I have not seen
INetCfgComponent::RaisePropertyUI to be able to display the property page
for the adapter/connection itself.

My thanks in advance if you could clarify.

Bryan S. Burgin
bbu...@microsoft.com

This posting is provided "AS IS" with no warranties, and confers no rights.

Stephan Wolf

unread,
Jan 28, 2003, 11:53:24 AM1/28/03
to
Umm, actually, I'm not sure either.

So, anyone, how does one show the property page of a network
adaoter/connection (i.e. the one that you see in "Network and Dial-up
Connections" - <select any connection entry> - "Properties")?

Stephan
---

Bryan S. Burgin [MS]

unread,
Jan 31, 2003, 11:14:58 PM1/31/03
to

Stephan, et al,

The attached sample code uses the Shell APIs and will pop up the network
adapter Wireless Networks properties or Wireless Connections diaplog
depending on the value of ci.lpVerb (szShowWirelessProperties
"wzcproperties" or szShowWirelessConnect 0x0018), see code fragment below.
These values may change at any time and this sample is provided "as is".
ConnectionGUID will have to be changed to the GUID for your adapter. This
is the same GUID as the NetCfgInstanceId for the adapter.

Bryan S. Burgin
bbu...@microsoft.com

This posting is provided "AS IS" with no warranties, and confers no rights.

// ShellExecuteSample.cpp : Defines the entry point for the console
application.
//

#include "stdafx.h"
#include <windows.h>
#include <tchar.h>
#include <shellapi.h>
#include <iostream.h>
#include <objbase.h>
#include <shlobj.h>
#include <wtypes.h>

// {7007ACC7-3202-11D1-AAD2-00805FC1270E}
const GUID CLSID_NetworkConnections = { 0x7007ACC7, 0x3202, 0x11D1, { 0xAA,
0xD2, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E } };

// Change this connection GUID to the GUID of the Wireless Network Device.
LPWSTR ConnectionGUID = L"::{C07F7206-6DF1-4537-9890-D71C981BF952}";

// The '18' below may appear like a magic number, but it's really not. If
you were to
// call IContextMenu->QueryContextMenu, and look for the Cmd ID of 'Show
Available Wireless Networks'
// you'll see it to be 18. The value is constant.
LPCSTR szShowWirelessConnect = (LPCSTR)0x0018;
LPCSTR szShowWirelessProperties = "wzcproperties";

int main(int argc, char* argv[])
{
CoInitialize(NULL);

IShellFolder *pShellFolder;
HRESULT hr = CoCreateInstance(CLSID_NetworkConnections, NULL,
CLSCTX_INPROC_SERVER,
IID_IShellFolder, reinterpret_cast<LPVOID
*>(&pShellFolder) );

if (SUCCEEDED(hr))
{
LPITEMIDLIST pidl;
hr = pShellFolder->ParseDisplayName(NULL, NULL, ConnectionGUID,
NULL, &pidl, NULL);
if (SUCCEEDED(hr))
{
LPCITEMIDLIST apidl[] = { pidl };
IContextMenu* pContextMenu;
hr = pShellFolder->GetUIObjectOf(NULL, 1, apidl,
IID_IContextMenu, NULL, reinterpret_cast<LPVOID *>(&pContextMenu));
if (SUCCEEDED(hr))
{
CMINVOKECOMMANDINFO ci;
ZeroMemory(&ci, sizeof(CMINVOKECOMMANDINFO));

// Change this line to show either szShowWirelessProperties
or szShowWirelessConnect
// ci.lpVerb = szShowWirelessProperties;
ci.lpVerb = szShowWirelessConnect;

hr = pContextMenu->InvokeCommand(&ci);
if (SUCCEEDED(hr))
{
cout << "Done - spinning message loop\n";

// Spin a windows message loop in order to give the
dialog chance to process commands.
// Of course to do it here is totally wrong - this
should be as part of a parent window's windowproc
// otherwise this app will never terminate. However,
this is just for illustration.
BOOL bRet;
MSG msg;
while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
pContextMenu->Release();
}
}
pShellFolder->Release();

// Free the PIDL using the shell's allocator
IMalloc* pShellMalloc;
hr = SHGetMalloc(&pShellMalloc);
if (SUCCEEDED(hr))
{
pShellMalloc->Free(pidl);
}
}

if (FAILED(hr))
{
cout << "Could not open wireless dialog due to error " << hr;
}
else
{
cout << "Success";
}
CoUninitialize();

return 0;
}

0 new messages