ReactOS 0.4.17-dev-806-gffa4164
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 35 of file lanstatusui.h.

Constructor & Destructor Documentation

◆ CLanStatus()

CLanStatus::CLanStatus ( )

Definition at line 31 of file lanstatusui.cpp.

31 :
34{
35}
CComPtr< INetConnectionManager > m_lpNetMan
Definition: lanstatusui.h:51
NOTIFICATION_ITEM * m_pHead
Definition: lanstatusui.h:52
#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 1307 of file lanstatusui.cpp.

1313{
1314 if (pguidCmdGroup)
1315 {
1316 if (IsEqualGUID(*pguidCmdGroup, CGID_ShellServiceObject))
1317 {
1319 }
1320 else
1321 {
1322 /* invoke status dialog */
1323 return ShowStatusDialogByCLSID(pguidCmdGroup);
1324 }
1325 }
1326 return S_OK;
1327}
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 1129 of file lanstatusui.cpp.

1130{
1132 HWND hwndDlg;
1136 NETCON_PROPERTIES* pProps;
1137 HRESULT hr;
1138 ULONG Count;
1139 ULONG Index;
1140 NOTIFICATION_ITEM * pItem, *pLast = NULL;
1141 LANSTATUSUI_CONTEXT * pContext;
1142
1143 TRACE("InitializeNetTaskbarNotifications\n");
1144
1145 if (m_pHead)
1146 {
1147 pItem = m_pHead;
1148 while (pItem)
1149 {
1150 hr = pItem->pNet->GetProperties(&pProps);
1151 if (SUCCEEDED(hr))
1152 {
1153 ZeroMemory(&nid, sizeof(nid));
1154 nid.cbSize = sizeof(nid);
1155 nid.uID = pItem->uID;
1156 nid.hWnd = pItem->hwndDlg;
1157 nid.uFlags = NIF_STATE;
1158 if (pProps->dwCharacter & NCCF_SHOW_ICON)
1159 nid.dwState = 0;
1160 else
1161 nid.dwState = NIS_HIDDEN;
1162
1163 nid.dwStateMask = NIS_HIDDEN;
1165 NcFreeNetconProperties(pProps);
1166 }
1167 pItem = pItem->pNext;
1168 }
1169 return S_OK;
1170 }
1171 /* get an instance to of IConnectionManager */
1172 hr = CNetConnectionManager_CreateInstance(IID_PPV_ARG(INetConnectionManager, &pNetConMan));
1174 return hr;
1175
1176 hr = pNetConMan->EnumConnections(NCME_DEFAULT, &pEnumCon);
1178 return hr;
1179
1180 Index = 1;
1181 while (TRUE)
1182 {
1183 pNetCon.Release();
1184 hr = pEnumCon->Next(1, &pNetCon, &Count);
1185 if (hr != S_OK)
1186 break;
1187
1188 TRACE("new connection\n");
1189 pItem = static_cast<NOTIFICATION_ITEM*>(CoTaskMemAlloc(sizeof(NOTIFICATION_ITEM)));
1190 if (!pItem)
1191 break;
1192
1193 pContext = static_cast<LANSTATUSUI_CONTEXT*>(CoTaskMemAlloc(sizeof(LANSTATUSUI_CONTEXT)));
1194 if (!pContext)
1195 {
1196 CoTaskMemFree(pItem);
1197 break;
1198 }
1199
1200 ZeroMemory(pContext, sizeof(LANSTATUSUI_CONTEXT));
1201 pContext->uID = Index;
1202 pContext->pNet = pNetCon;
1203 pContext->Status = -1;
1204 pContext->dwAdapterIndex = Index;
1205 pItem->uID = Index;
1206 pItem->pNext = NULL;
1207 pItem->pNet = pNetCon;
1208 pItem->pNet->AddRef();
1210 if (!hwndDlg)
1211 {
1212 ERR("CreateDialogParamW failed\n");
1213 continue;
1214 }
1215
1216 ZeroMemory(&nid, sizeof(nid));
1217 nid.cbSize = sizeof(nid);
1218 nid.uID = Index++;
1220 nid.uVersion = NOTIFYICON_VERSION;
1222 nid.hWnd = hwndDlg;
1223
1224 hr = pNetCon->GetProperties(&pProps);
1225 if (SUCCEEDED(hr))
1226 {
1227 CopyMemory(&pItem->guidItem, &pProps->guidId, sizeof(GUID));
1228 if (!(pProps->dwCharacter & NCCF_SHOW_ICON))
1229 {
1230 nid.dwState = NIS_HIDDEN;
1231 nid.dwStateMask = NIS_HIDDEN;
1232 nid.uFlags |= NIF_STATE;
1233 }
1234 if (pProps->Status == NCS_MEDIA_DISCONNECTED || pProps->Status == NCS_DISCONNECTED || pProps->Status == NCS_HARDWARE_DISABLED)
1236 else if (pProps->Status == NCS_CONNECTED)
1238
1239 if (nid.hIcon)
1240 nid.uFlags |= NIF_ICON;
1241
1242 wcscpy(nid.szTip, pProps->pszwName);
1243 nid.uFlags |= NIF_TIP;
1244 NcFreeNetconProperties(pProps);
1245 }
1246 pContext->hwndStatusDlg = hwndDlg;
1247 pItem->hwndDlg = hwndDlg;
1248
1250 {
1251 if (pLast)
1252 pLast->pNext = pItem;
1253 else
1254 m_pHead = pItem;
1255
1256 pLast = pItem;
1257 Index++;
1258 }
1259 else
1260 {
1261 ERR("Shell_NotifyIconW failed\n");
1262 CoTaskMemFree(pItem);
1263 }
1264
1265 if (nid.uFlags & NIF_ICON)
1267 }
1268
1269 m_lpNetMan = pNetConMan;
1270 return S_OK;
1271}
#define IID_PPV_ARG(Itype, ppType)
#define ERR(fmt,...)
Definition: precomp.h:57
void Release()
Definition: atlcomcli.h:170
HRESULT WINAPI CNetConnectionManager_CreateInstance(REFIID riid, LPVOID *ppv)
HRESULT hr
Definition: delayimp.cpp:582
#define TRUE
Definition: types.h:120
#define IDD_STATUS
Definition: resource.h:25
#define IDI_NET_OFF
Definition: resource.h:14
#define IDI_NET_IDLE
Definition: resource.h:13
void *WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: malloc.c:381
void WINAPI CoTaskMemFree(void *ptr)
Definition: malloc.c:389
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33
#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
#define ZeroMemory
Definition: minwinbase.h:31
#define CopyMemory
Definition: minwinbase.h:29
LONG_PTR LPARAM
Definition: minwindef.h:175
@ 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
wcscpy
#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
#define TRACE(s)
Definition: solgame.cpp:4
INetConnection * pNet
Definition: lanstatusui.h:20
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
HWND WINAPI CreateDialogParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
#define LoadIcon
Definition: winuser.h:5979
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2422

Referenced by Exec().

◆ QueryStatus()

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

Definition at line 1295 of file lanstatusui.cpp.

1300{
1301 MessageBoxW(NULL, pCmdText->rgwz, L"IOleCommandTarget_fnQueryStatus", MB_OK);
1302 return E_NOTIMPL;
1303}
#define E_NOTIMPL
Definition: ddrawi.h:99
#define L(x)
Definition: resources.c:13
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 1274 of file lanstatusui.cpp.

1275{
1276 NOTIFICATION_ITEM *pItem;
1277
1278 pItem = m_pHead;
1279 while (pItem)
1280 {
1281 if (IsEqualGUID(pItem->guidItem, *pguidCmdGroup))
1282 {
1283 SendMessageW(pItem->hwndDlg, WM_SHOWSTATUSDLG, 0, WM_LBUTTONUP);
1284 return S_OK;
1285 }
1286 pItem = pItem->pNext;
1287 }
1288
1289 ERR("not found\n");
1290 return E_FAIL;
1291}
#define E_FAIL
Definition: ddrawi.h:102
#define WM_LBUTTONUP
Definition: winuser.h:1805
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 51 of file lanstatusui.h.

Referenced by InitializeNetTaskbarNotifications().

◆ m_pHead

NOTIFICATION_ITEM* CLanStatus::m_pHead
private

Definition at line 52 of file lanstatusui.h.

Referenced by InitializeNetTaskbarNotifications(), and ShowStatusDialogByCLSID().


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