it creates a reference to IOleCommandTarget interface and calls its IOleCommandTarget::Exec function with CGID_ShellServiceObject.
This causes IOleCommandTarget interface to enumerate all available network connections, check if they should be shown (NCCF_SHOW_ICON flag set
in the NETCON_PROPERTIES dwCharacter), and add them to notification area with Shell_NotifyIcon. For that purpose a hidden window is created (dialog
procedure is LANStatusDlg) which receives WM_SHOWSTATUSDLG msg when it shall show display the status dialog.
When a user wants to display the status dialog by clicking on the context menu of network connection item, the IShellFolder sends the NetCfgInstanceId of
the selected network connection to IOleCommandTarget::Exec function. The function then looks up the specified notification item and then sends
the WM_SHOWSTATUSDLG msg to specific window.
=== Network Connections Property Dialog ===
The network connections property dialog is implemented by the INetConnectionPropertyUi2 interface. The class id is obtained by calling
INetConnection::GetUiObjectClassId of the current selected network connection. After obtaining the interface by calling CoCreateInstance, the
with current INetConnection, then it should fail INetConnectionPropertyUi::AddPages
Note: The function ShowNetConnectionProperties in shlfdr_netconnect.c shows how to invoke the Network Connections Property Dialog
The enumeration of network components (protocols, client, transport) is done by using the INetCfg api). Initialization is performed in InitializeLANPropertiesUIDlg
function. When a user accepts changes, it calls INetCfg::Apply or when it aborts the changes INetCfg::Cancel.
=== Known Issues ===
* Status changes of an adapter are not automatically updated because the information is cached
* There seems to be an icon problem which makes icon blink in the status dialog