ReactOS 0.4.16-dev-1260-g901af6a
CLanStatus Class Reference

#include <lanstatusui.h>

Inheritance diagram for CLanStatus:
Collaboration diagram for CLanStatus:

Public Member Functions

 CLanStatus ()
 
STDMETHOD() QueryStatus (const GUID *pguidCmdGroup, ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT *pCmdText) override
 
STDMETHOD() Exec (const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) override
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
- Public Member Functions inherited from IOleCommandTarget
HRESULT QueryStatus ([in, unique] const GUID *pguidCmdGroup, [in] ULONG cCmds, [in, out, size_is(cCmds)] OLECMD prgCmds[], [in, out, unique] OLECMDTEXT *pCmdText)
 
HRESULT Exec ([in, unique] const GUID *pguidCmdGroup, [in] DWORD nCmdID, [in] DWORD nCmdexecopt, [in, unique] VARIANT *pvaIn, [in, out, unique] VARIANT *pvaOut)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 

Private Member Functions

HRESULT InitializeNetTaskbarNotifications ()
 
HRESULT ShowStatusDialogByCLSID (const GUID *pguidCmdGroup)
 

Private Attributes

CComPtr< INetConnectionManager > m_lpNetMan
 
NOTIFICATION_ITEMm_pHead
 

Additional Inherited Members

- Public Types inherited from IOleCommandTarget
enum  OLECMDF {
  OLECMDF_SUPPORTED = 0x1 , OLECMDF_ENABLED = 0x2 , OLECMDF_LATCHED = 0x4 , OLECMDF_NINCHED = 0x8 ,
  OLECMDF_INVISIBLE = 0x10 , OLECMDF_DEFHIDEONCTXTMENU = 0x20
}
 
enum  OLECMDTEXTF { OLECMDTEXTF_NONE = 0 , OLECMDTEXTF_NAME = 1 , OLECMDTEXTF_STATUS = 2 }
 
enum  OLECMDEXECOPT { OLECMDEXECOPT_DODEFAULT = 0 , OLECMDEXECOPT_PROMPTUSER = 1 , OLECMDEXECOPT_DONTPROMPTUSER = 2 , OLECMDEXECOPT_SHOWHELP = 3 }
 
enum  OLECMDID {
  OLECMDID_OPEN = 1 , OLECMDID_NEW = 2 , OLECMDID_SAVE = 3 , OLECMDID_SAVEAS = 4 ,
  OLECMDID_SAVECOPYAS = 5 , OLECMDID_PRINT = 6 , OLECMDID_PRINTPREVIEW = 7 , OLECMDID_PAGESETUP = 8 ,
  OLECMDID_SPELL = 9 , OLECMDID_PROPERTIES = 10 , OLECMDID_CUT = 11 , OLECMDID_COPY = 12 ,
  OLECMDID_PASTE = 13 , OLECMDID_PASTESPECIAL = 14 , OLECMDID_UNDO = 15 , OLECMDID_REDO = 16 ,
  OLECMDID_SELECTALL = 17 , OLECMDID_CLEARSELECTION = 18 , OLECMDID_ZOOM = 19 , OLECMDID_GETZOOMRANGE = 20 ,
  OLECMDID_UPDATECOMMANDS = 21 , OLECMDID_REFRESH = 22 , OLECMDID_STOP = 23 , OLECMDID_HIDETOOLBARS = 24 ,
  OLECMDID_SETPROGRESSMAX = 25 , OLECMDID_SETPROGRESSPOS = 26 , OLECMDID_SETPROGRESSTEXT = 27 , OLECMDID_SETTITLE = 28 ,
  OLECMDID_SETDOWNLOADSTATE = 29 , OLECMDID_STOPDOWNLOAD = 30 , OLECMDID_ONTOOLBARACTIVATED = 31 , OLECMDID_FIND = 32 ,
  OLECMDID_DELETE = 33 , OLECMDID_HTTPEQUIV = 34 , OLECMDID_HTTPEQUIV_DONE = 35 , OLECMDID_ENABLE_INTERACTION = 36 ,
  OLECMDID_ONUNLOAD = 37 , OLECMDID_PROPERTYBAG2 = 38 , OLECMDID_PREREFRESH = 39 , OLECMDID_SHOWSCRIPTERROR = 40 ,
  OLECMDID_SHOWMESSAGE = 41 , OLECMDID_SHOWFIND = 42 , OLECMDID_SHOWPAGESETUP = 43 , OLECMDID_SHOWPRINT = 44 ,
  OLECMDID_CLOSE = 45 , OLECMDID_ALLOWUILESSSAVEAS = 46 , OLECMDID_DONTDOWNLOADCSS = 47 , OLECMDID_UPDATEPAGESTATUS = 48 ,
  OLECMDID_PRINT2 = 49 , OLECMDID_PRINTPREVIEW2 = 50 , OLECMDID_SETPRINTTEMPLATE = 51 , OLECMDID_GETPRINTTEMPLATE = 52 ,
  OLECMDID_PAGEACTIONBLOCKED = 55 , OLECMDID_PAGEACTIONUIQUERY = 56 , OLECMDID_FOCUSVIEWCONTROLS = 57 , OLECMDID_FOCUSVIEWCONTROLSQUERY = 58 ,
  OLECMDID_SHOWPAGEACTIONMENU = 59 , OLECMDID_ADDTRAVELENTRY = 60 , OLECMDID_UPDATETRAVELENTRY = 61 , OLECMDID_UPDATEBACKFORWARDSTATE = 62 ,
  OLECMDID_OPTICAL_ZOOM = 63 , OLECMDID_OPTICAL_GETZOOMRANGE = 64 , OLECMDID_WINDOWSTATECHANGED = 65 , OLECMDID_ACTIVEXINSTALLSCOPE = 66 ,
  OLECMDID_UPDATETRAVELENTRY_DATARECOVERY = 67 , OLECMDID_SHOWTASKDLG = 68 , OLECMDID_POPSTATEEVENT = 69 , OLECMDID_VIEWPORT_MODE = 70 ,
  OLECMDID_LAYOUT_VIEWPORT_WIDTH = 71 , OLECMDID_VISUAL_VIEWPORT_EXCLUDE_BOTTOM = 72 , OLECMDID_USER_OPTICAL_ZOOM = 73 , OLECMDID_PAGEAVAILABLE = 74 ,
  OLECMDID_GETUSERSCALABLE = 75 , OLECMDID_UPDATE_CARET = 76 , OLECMDID_ENABLE_VISIBILITY = 77 , OLECMDID_MEDIA_PLAYBACK = 78
}
 
typedef IOleCommandTargetLPOLECOMMANDTARGET
 
typedef enum IOleCommandTarget::OLECMDF OLECMDF
 
typedef struct IOleCommandTarget::_tagOLECMD OLECMD
 
typedef struct IOleCommandTarget::_tagOLECMDTEXT OLECMDTEXT
 
typedef enum IOleCommandTarget::OLECMDTEXTF OLECMDTEXTF
 
typedef enum IOleCommandTarget::OLECMDEXECOPT OLECMDEXECOPT
 
typedef enum IOleCommandTarget::OLECMDID OLECMDID
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 34 of file lanstatusui.h.

Constructor & Destructor Documentation

◆ CLanStatus()

CLanStatus::CLanStatus ( )

Definition at line 14 of file lanstatusui.cpp.

14 :
17{
18}
CComPtr< INetConnectionManager > m_lpNetMan
Definition: lanstatusui.h:50
NOTIFICATION_ITEM * m_pHead
Definition: lanstatusui.h:51
#define NULL
Definition: types.h:112

Member Function Documentation

◆ Exec()

HRESULT WINAPI CLanStatus::Exec ( const GUID pguidCmdGroup,
DWORD  nCmdID,
DWORD  nCmdexecopt,
VARIANT pvaIn,
VARIANT pvaOut 
)
override

Implements IOleCommandTarget.

Definition at line 1251 of file lanstatusui.cpp.

1257{
1258 if (pguidCmdGroup)
1259 {
1260 if (IsEqualGUID(*pguidCmdGroup, CGID_ShellServiceObject))
1261 {
1263 }
1264 else
1265 {
1266 /* invoke status dialog */
1267 return ShowStatusDialogByCLSID(pguidCmdGroup);
1268 }
1269 }
1270 return S_OK;
1271}
HRESULT InitializeNetTaskbarNotifications()
HRESULT ShowStatusDialogByCLSID(const GUID *pguidCmdGroup)
#define S_OK
Definition: intsafe.h:52
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

◆ InitializeNetTaskbarNotifications()

HRESULT CLanStatus::InitializeNetTaskbarNotifications ( )
private

Definition at line 1074 of file lanstatusui.cpp.

1075{
1077 HWND hwndDlg;
1081 NETCON_PROPERTIES* pProps;
1082 HRESULT hr;
1083 ULONG Count;
1084 ULONG Index;
1085 NOTIFICATION_ITEM * pItem, *pLast = NULL;
1086 LANSTATUSUI_CONTEXT * pContext;
1087
1088 TRACE("InitializeNetTaskbarNotifications\n");
1089
1090 if (m_pHead)
1091 {
1092 pItem = m_pHead;
1093 while (pItem)
1094 {
1095 hr = pItem->pNet->GetProperties(&pProps);
1096 if (SUCCEEDED(hr))
1097 {
1098 ZeroMemory(&nid, sizeof(nid));
1099 nid.cbSize = sizeof(nid);
1100 nid.uID = pItem->uID;
1101 nid.hWnd = pItem->hwndDlg;
1102 nid.uFlags = NIF_STATE;
1103 if (pProps->dwCharacter & NCCF_SHOW_ICON)
1104 nid.dwState = 0;
1105 else
1106 nid.dwState = NIS_HIDDEN;
1107
1108 nid.dwStateMask = NIS_HIDDEN;
1110 NcFreeNetconProperties(pProps);
1111 }
1112 pItem = pItem->pNext;
1113 }
1114 return S_OK;
1115 }
1116 /* get an instance to of IConnectionManager */
1117 hr = CNetConnectionManager_CreateInstance(IID_PPV_ARG(INetConnectionManager, &pNetConMan));
1119 return hr;
1120
1121 hr = pNetConMan->EnumConnections(NCME_DEFAULT, &pEnumCon);
1123 return hr;
1124
1125 Index = 1;
1126 while (TRUE)
1127 {
1128 pNetCon.Release();
1129 hr = pEnumCon->Next(1, &pNetCon, &Count);
1130 if (hr != S_OK)
1131 break;
1132
1133 TRACE("new connection\n");
1134 pItem = static_cast<NOTIFICATION_ITEM*>(CoTaskMemAlloc(sizeof(NOTIFICATION_ITEM)));
1135 if (!pItem)
1136 break;
1137
1138 pContext = static_cast<LANSTATUSUI_CONTEXT*>(CoTaskMemAlloc(sizeof(LANSTATUSUI_CONTEXT)));
1139 if (!pContext)
1140 {
1141 CoTaskMemFree(pItem);
1142 break;
1143 }
1144
1145 ZeroMemory(pContext, sizeof(LANSTATUSUI_CONTEXT));
1146 pContext->uID = Index;
1147 pContext->pNet = pNetCon;
1148 pContext->Status = -1;
1149 pContext->dwAdapterIndex = Index;
1150 pItem->uID = Index;
1151 pItem->pNext = NULL;
1152 pItem->pNet = pNetCon;
1153 pItem->pNet->AddRef();
1155 if (!hwndDlg)
1156 {
1157 ERR("CreateDialogParamW failed\n");
1158 continue;
1159 }
1160
1161 ZeroMemory(&nid, sizeof(nid));
1162 nid.cbSize = sizeof(nid);
1163 nid.uID = Index++;
1165 nid.uVersion = NOTIFYICON_VERSION;
1167 nid.hWnd = hwndDlg;
1168
1169 hr = pNetCon->GetProperties(&pProps);
1170 if (SUCCEEDED(hr))
1171 {
1172 CopyMemory(&pItem->guidItem, &pProps->guidId, sizeof(GUID));
1173 if (!(pProps->dwCharacter & NCCF_SHOW_ICON))
1174 {
1175 nid.dwState = NIS_HIDDEN;
1176 nid.dwStateMask = NIS_HIDDEN;
1177 nid.uFlags |= NIF_STATE;
1178 }
1179 if (pProps->Status == NCS_MEDIA_DISCONNECTED || pProps->Status == NCS_DISCONNECTED || pProps->Status == NCS_HARDWARE_DISABLED)
1181 else if (pProps->Status == NCS_CONNECTED)
1183
1184 if (nid.hIcon)
1185 nid.uFlags |= NIF_ICON;
1186
1187 wcscpy(nid.szTip, pProps->pszwName);
1188 nid.uFlags |= NIF_TIP;
1189 }
1190 pContext->hwndStatusDlg = hwndDlg;
1191 pItem->hwndDlg = hwndDlg;
1192
1194 {
1195 if (pLast)
1196 pLast->pNext = pItem;
1197 else
1198 m_pHead = pItem;
1199
1200 pLast = pItem;
1201 Index++;
1202 }
1203 else
1204 {
1205 ERR("Shell_NotifyIconW failed\n");
1206 CoTaskMemFree(pItem);
1207 }
1208
1209 if (nid.uFlags & NIF_ICON)
1211 }
1212
1213 m_lpNetMan = pNetConMan;
1214 return S_OK;
1215}
#define ERR(fmt,...)
Definition: precomp.h:57
void Release()
Definition: atlcomcli.h:170
HRESULT WINAPI CNetConnectionManager_CreateInstance(REFIID riid, LPVOID *ppv)
wcscpy
#define TRUE
Definition: types.h:120
#define IDD_STATUS
Definition: resource.h:22
#define IDI_NET_OFF
Definition: resource.h:11
#define IDI_NET_IDLE
Definition: resource.h:10
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:30
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
#define SUCCEEDED(hr)
Definition: intsafe.h:50
INT_PTR CALLBACK LANStatusDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define WM_SHOWSTATUSDLG
Definition: lanstatusui.h:6
NOTIFYICONDATA nid
Definition: magnifier.c:44
@ NCCF_SHOW_ICON
Definition: netcon.h:20
@ NCS_MEDIA_DISCONNECTED
Definition: netcon.h:46
@ NCS_CONNECTED
Definition: netcon.h:41
@ NCS_DISCONNECTED
Definition: netcon.h:39
@ NCS_HARDWARE_DISABLED
Definition: netcon.h:44
@ NCME_DEFAULT
Definition: netcon.h:10
HINSTANCE netshell_hInstance
Definition: netshell.cpp:12
VOID WINAPI NcFreeNetconProperties(NETCON_PROPERTIES *pProps)
Definition: netshell.cpp:119
int Count
Definition: noreturn.cpp:7
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
#define NIM_MODIFY
Definition: shellapi.h:95
#define NIF_ICON
Definition: shellapi.h:106
#define NIF_MESSAGE
Definition: shellapi.h:105
#define NIM_ADD
Definition: shellapi.h:94
#define NIF_TIP
Definition: shellapi.h:107
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
INetConnection * pNet
Definition: lanstatusui.h:19
UINT uCallbackMessage
Definition: shellapi.h:231
DWORD dwStateMask
Definition: shellapi.h:239
CHAR szTip[128]
Definition: shellapi.h:237
NETCON_STATUS Status
Definition: netcon.h:86
BOOL WINAPI Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW pnid)
Definition: systray.cpp:128
uint32_t ULONG
Definition: typedefs.h:59
_In_ WDFCOLLECTION _In_ ULONG Index
#define ZeroMemory
Definition: winbase.h:1753
#define CopyMemory
Definition: winbase.h:1751
LONG_PTR LPARAM
Definition: windef.h:208
HWND WINAPI CreateDialogParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
#define LoadIcon
Definition: winuser.h:5898
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2390
#define IID_PPV_ARG(Itype, ppType)

Referenced by Exec().

◆ QueryStatus()

HRESULT WINAPI CLanStatus::QueryStatus ( const GUID pguidCmdGroup,
ULONG  cCmds,
OLECMD prgCmds,
OLECMDTEXT pCmdText 
)
override

Definition at line 1239 of file lanstatusui.cpp.

1244{
1245 MessageBoxW(NULL, pCmdText->rgwz, L"IOleCommandTarget_fnQueryStatus", MB_OK);
1246 return E_NOTIMPL;
1247}
#define E_NOTIMPL
Definition: ddrawi.h:99
#define L(x)
Definition: ntvdm.h:50
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_OK
Definition: winuser.h:801

◆ ShowStatusDialogByCLSID()

HRESULT CLanStatus::ShowStatusDialogByCLSID ( const GUID pguidCmdGroup)
private

Definition at line 1218 of file lanstatusui.cpp.

1219{
1220 NOTIFICATION_ITEM *pItem;
1221
1222 pItem = m_pHead;
1223 while (pItem)
1224 {
1225 if (IsEqualGUID(pItem->guidItem, *pguidCmdGroup))
1226 {
1227 SendMessageW(pItem->hwndDlg, WM_SHOWSTATUSDLG, 0, WM_LBUTTONUP);
1228 return S_OK;
1229 }
1230 pItem = pItem->pNext;
1231 }
1232
1233 ERR("not found\n");
1234 return E_FAIL;
1235}
#define E_FAIL
Definition: ddrawi.h:102
#define WM_LBUTTONUP
Definition: winuser.h:1796
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by Exec().

Member Data Documentation

◆ m_lpNetMan

CComPtr<INetConnectionManager> CLanStatus::m_lpNetMan
private

Definition at line 50 of file lanstatusui.h.

Referenced by InitializeNetTaskbarNotifications().

◆ m_pHead

NOTIFICATION_ITEM* CLanStatus::m_pHead
private

Definition at line 51 of file lanstatusui.h.

Referenced by InitializeNetTaskbarNotifications(), and ShowStatusDialogByCLSID().


The documentation for this class was generated from the following files: