ReactOS 0.4.15-dev-7934-g1dc8d80
CSysTray Class Reference

#include <csystray.h>

Inheritance diagram for CSysTray:
Collaboration diagram for CSysTray:

Public Member Functions

HRESULT NotifyIcon (INT code, UINT uId, HICON hIcon, LPCWSTR szTip, DWORD dwstate=0)
 
HWND GetHWnd ()
 
VOID EnableService (DWORD dwServiceFlag, BOOL bEnable)
 
BOOL IsServiceEnabled (DWORD dwServiceFlag)
 
 CSysTray ()
 
virtual ~CSysTray ()
 
virtual HRESULT STDMETHODCALLTYPE QueryStatus (const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
 
virtual HRESULT STDMETHODCALLTYPE Exec (const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
 
- 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 ()
 
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 ()
 

Protected Member Functions

BOOL ProcessWindowMessage (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult, DWORD dwMsgMapID=0)
 

Private Member Functions

HRESULT SysTrayMessageLoop ()
 
HRESULT SysTrayThreadProc ()
 
HRESULT CreateSysTrayThread ()
 
HRESULT DestroySysTrayWindow ()
 
HRESULT InitIcons ()
 
HRESULT ShutdownIcons ()
 
HRESULT UpdateIcons ()
 
HRESULT ProcessIconMessage (UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult)
 
HRESULT InitNetShell ()
 
HRESULT ShutdownNetShell ()
 
VOID GetServicesEnabled ()
 

Static Private Member Functions

static DWORD WINAPI s_SysTrayThreadProc (PVOID param)
 

Private Attributes

CComPtr< IOleCommandTargetpctNetShell
 
DWORD dwServicesEnabled
 
UINT wm_SHELLHOOK
 
UINT wm_DESTROYWINDOW
 

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 21 of file csystray.h.

Constructor & Destructor Documentation

◆ CSysTray()

CSysTray::CSysTray ( )

Definition at line 23 of file csystray.cpp.

24{
26 wm_DESTROYWINDOW = RegisterWindowMessageW(L"CSysTray_DESTROY");
27}
UINT wm_SHELLHOOK
Definition: csystray.h:32
DWORD dwServicesEnabled
Definition: csystray.h:31
UINT wm_DESTROYWINDOW
Definition: csystray.h:33
#define L(x)
Definition: ntvdm.h:50
UINT WINAPI RegisterWindowMessageW(_In_ LPCWSTR)

◆ ~CSysTray()

CSysTray::~CSysTray ( )
virtual

Definition at line 29 of file csystray.cpp.

30{
31}

Member Function Documentation

◆ CreateSysTrayThread()

HRESULT CSysTray::CreateSysTrayThread ( )
private

Definition at line 271 of file csystray.cpp.

272{
273 TRACE("CSysTray Init TODO: Initialize tray icon handlers.\n");
274 AddRef();
275
277
279
280 return S_OK;
281}
static DWORD WINAPI s_SysTrayThreadProc(PVOID param)
Definition: csystray.cpp:230
#define NULL
Definition: types.h:112
#define CloseHandle
Definition: compat.h:739
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
ULONG AddRef()
#define S_OK
Definition: intsafe.h:52
HANDLE hThread
Definition: wizard.c:28
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by Exec().

◆ DestroySysTrayWindow()

HRESULT CSysTray::DestroySysTrayWindow ( )
private

Definition at line 283 of file csystray.cpp.

284{
285 if (!DestroyWindow())
286 {
287 // Window is from another thread, ask it politely to destroy itself:
289 }
290 return S_OK;
291}
#define SendMessage
Definition: winuser.h:5843
BOOL WINAPI DestroyWindow(_In_ HWND)

Referenced by Exec().

◆ EnableService()

VOID CSysTray::EnableService ( DWORD  dwServiceFlag,
BOOL  bEnable 
)

Definition at line 62 of file csystray.cpp.

63{
64 HKEY hKey;
65
66 if (bEnable)
67 this->dwServicesEnabled |= dwServiceFlag;
68 else
69 this->dwServicesEnabled &= ~dwServiceFlag;
70
72 L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\SysTray",
73 0,
74 NULL,
77 NULL,
78 &hKey,
80 {
82 L"Services",
83 0,
86 sizeof(DWORD));
87
89 }
90}
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1096
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
unsigned long DWORD
Definition: ntddk_ex.h:95
FxAutoRegKey hKey
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
#define KEY_WRITE
Definition: nt_native.h:1031
#define REG_DWORD
Definition: sdbapi.c:596
unsigned char * LPBYTE
Definition: typedefs.h:53
_In_ BOOL bEnable
Definition: winddi.h:3426
#define HKEY_CURRENT_USER
Definition: winreg.h:11

◆ Exec()

HRESULT STDMETHODCALLTYPE CSysTray::Exec ( const GUID pguidCmdGroup,
DWORD  nCmdID,
DWORD  nCmdexecopt,
VARIANT pvaIn,
VARIANT pvaOut 
)
virtual

Implements IOleCommandTarget.

Definition at line 300 of file csystray.cpp.

301{
302 if (!IsEqualGUID(*pguidCmdGroup, CGID_ShellServiceObject))
303 return E_FAIL;
304
305 switch (nCmdID)
306 {
307 case OLECMDID_NEW: // init
308 return CreateSysTrayThread();
309 case OLECMDID_SAVE: // shutdown
310 return DestroySysTrayWindow();
311 }
312 return S_OK;
313}
HRESULT DestroySysTrayWindow()
Definition: csystray.cpp:283
HRESULT CreateSysTrayThread()
Definition: csystray.cpp:271
#define E_FAIL
Definition: ddrawi.h:102
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

◆ GetHWnd()

HWND CSysTray::GetHWnd ( )
inline

Definition at line 54 of file csystray.h.

54{ return m_hWnd; }

Referenced by _RunHotplug(), _ShowContextMenu(), _ShowContextMenuR(), NotifyBalloon(), and ShowPowerSchemesPopupMenu().

◆ GetServicesEnabled()

VOID CSysTray::GetServicesEnabled ( )
private

Definition at line 33 of file csystray.cpp.

34{
35 HKEY hKey;
37
38 /* Enable power, volume and hotplug by default */
40
42 0,
43 NULL,
46 NULL,
47 &hKey,
49 {
50 dwSize = sizeof(DWORD);
52 L"Services",
53 NULL,
54 NULL,
56 &dwSize);
57
59 }
60}
#define HOTPLUG_SERVICE_FLAG
Definition: precomp.h:39
#define VOLUME_SERVICE_FLAG
Definition: precomp.h:40
#define POWER_SERVICE_FLAG
Definition: precomp.h:38
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define KEY_READ
Definition: nt_native.h:1023
#define DWORD
Definition: nt_native.h:44
#define REGSTR_PATH_SYSTRAY
Definition: regstr.h:531

Referenced by ProcessWindowMessage().

◆ InitIcons()

HRESULT CSysTray::InitIcons ( )
private

Definition at line 119 of file csystray.cpp.

120{
121 TRACE("Initializing Notification icons...\n");
122 for (int i = 0; i < g_NumIcons; i++)
123 {
124 if (this->dwServicesEnabled & g_IconHandlers[i].dwServiceFlag)
125 {
127 if (FAILED(hr))
128 return hr;
129 }
130 }
131
132 MouseKeys_Init(this);
133
134 return InitNetShell();
135}
HRESULT InitNetShell()
Definition: csystray.cpp:97
SysTrayIconHandlers_t g_IconHandlers[]
Definition: csystray.cpp:16
const int g_NumIcons
Definition: csystray.cpp:21
HRESULT STDMETHODCALLTYPE MouseKeys_Init(_In_ CSysTray *pSysTray)
Definition: mouse.cpp:15
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hr
Definition: shlfolder.c:183
PFNSTINIT pfnInit
Definition: precomp.h:52

Referenced by ProcessWindowMessage().

◆ InitNetShell()

HRESULT CSysTray::InitNetShell ( )
private

Definition at line 97 of file csystray.cpp.

98{
99 HRESULT hr = CoCreateInstance(CLSID_ConnectionTray, 0, 1u, IID_PPV_ARG(IOleCommandTarget, &pctNetShell));
100 if (FAILED(hr))
101 return hr;
102
103 return pctNetShell->Exec(&CGID_ShellServiceObject,
106}
CComPtr< IOleCommandTarget > pctNetShell
Definition: csystray.h:27
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
#define IID_PPV_ARG(Itype, ppType)

Referenced by InitIcons().

◆ IsServiceEnabled()

BOOL CSysTray::IsServiceEnabled ( DWORD  dwServiceFlag)

Definition at line 92 of file csystray.cpp.

93{
94 return (this->dwServicesEnabled & dwServiceFlag);
95}

◆ NotifyIcon()

HRESULT CSysTray::NotifyIcon ( INT  code,
UINT  uId,
HICON  hIcon,
LPCWSTR  szTip,
DWORD  dwstate = 0 
)

Definition at line 207 of file csystray.cpp.

208{
209 NOTIFYICONDATA nim = { 0 };
210
211 TRACE("NotifyIcon code=%d, uId=%d, hIcon=%p, szTip=%S\n", code, uId, hIcon, szTip);
212
213 nim.cbSize = sizeof(nim);
214 nim.uFlags = NIF_MESSAGE | NIF_ICON | NIF_STATE | NIF_TIP;
215 nim.hIcon = hIcon;
216 nim.uID = uId;
217 nim.uCallbackMessage = uId;
218 nim.dwState = dwstate;
219 nim.dwStateMask = NIS_HIDDEN;
220 nim.hWnd = m_hWnd;
221 nim.uVersion = NOTIFYICON_VERSION;
222 if (szTip)
223 StringCchCopy(nim.szTip, _countof(nim.szTip), szTip);
224 else
225 nim.szTip[0] = 0;
226 BOOL ret = Shell_NotifyIcon(code, &nim);
227 return ret ? S_OK : E_FAIL;
228}
unsigned int BOOL
Definition: ntddk_ex.h:94
HICON hIcon
Definition: msconfig.c:44
#define NIF_ICON
Definition: shellapi.h:106
#define NIF_MESSAGE
Definition: shellapi.h:105
#define Shell_NotifyIcon
Definition: shellapi.h:691
#define NIF_TIP
Definition: shellapi.h:107
#define _countof(array)
Definition: sndvol32.h:68
#define StringCchCopy
Definition: strsafe.h:139
UINT uCallbackMessage
Definition: shellapi.h:231
DWORD dwStateMask
Definition: shellapi.h:239
CHAR szTip[128]
Definition: shellapi.h:237
Definition: inflate.c:139
int ret

◆ ProcessIconMessage()

HRESULT CSysTray::ProcessIconMessage ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
LRESULT lResult 
)
private

Definition at line 171 of file csystray.cpp.

172{
173 for (int i = 0; i < g_NumIcons; i++)
174 {
175 HRESULT hr = g_IconHandlers[i].pfnMessage(this, uMsg, wParam, lParam, lResult);
176 if (FAILED(hr))
177 return hr;
178
179 if (hr == S_OK)
180 return hr;
181 }
182
183 // Not handled by anyone, so return accordingly.
184 return S_FALSE;
185}
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
PFNSTMESSAGE pfnMessage
Definition: precomp.h:55
#define S_FALSE
Definition: winerror.h:2357

Referenced by ProcessWindowMessage().

◆ ProcessWindowMessage()

BOOL CSysTray::ProcessWindowMessage ( HWND  hWnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
LRESULT lResult,
DWORD  dwMsgMapID = 0 
)
protected

Definition at line 315 of file csystray.cpp.

316{
317 HRESULT hr;
318
319 if (hWnd != m_hWnd)
320 return FALSE;
321
322 if (wm_DESTROYWINDOW && uMsg == wm_DESTROYWINDOW)
323 {
324 return DestroyWindow();
325 }
326
327 if (wm_SHELLHOOK && uMsg == wm_SHELLHOOK)
328 {
329 if (wParam == HSHELL_ACCESSIBILITYSTATE && lParam == ACCESS_MOUSEKEYS)
330 {
331 MouseKeys_Update(this);
332 }
333 lResult = 0L;
334 return TRUE;
335 }
336
337 switch (uMsg)
338 {
339 case WM_NCCREATE:
340 case WM_NCDESTROY:
341 return FALSE;
342
343 case WM_CREATE:
345 InitIcons();
346 SetTimer(1, 2000, NULL);
348 return TRUE;
349
350 case WM_TIMER:
351 if (wParam == 1)
352 UpdateIcons();
353 else
354 ProcessIconMessage(uMsg, wParam, lParam, lResult);
355 return TRUE;
356
357 case WM_SETTINGCHANGE:
359 {
360 MouseKeys_Update(this);
361 }
362 break;
363
364 case WM_DESTROY:
365 KillTimer(1);
369 return TRUE;
370 }
371
372 TRACE("SysTray message received %u (%08p %08p)\n", uMsg, wParam, lParam);
373
374 hr = ProcessIconMessage(uMsg, wParam, lParam, lResult);
375 if (FAILED(hr))
376 return FALSE;
377
378 return (hr == S_OK);
379}
HWND hWnd
Definition: settings.c:17
VOID GetServicesEnabled()
Definition: csystray.cpp:33
HRESULT ProcessIconMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult)
Definition: csystray.cpp:171
HRESULT ShutdownIcons()
Definition: csystray.cpp:137
HRESULT UpdateIcons()
Definition: csystray.cpp:155
HRESULT InitIcons()
Definition: csystray.cpp:119
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HRESULT STDMETHODCALLTYPE MouseKeys_Update(_In_ CSysTray *pSysTray)
Definition: mouse.cpp:43
BOOL WINAPI DeregisterShellHookWindow(_In_ HWND)
#define SPI_SETMOUSEKEYS
Definition: winuser.h:1404
#define WM_CREATE
Definition: winuser.h:1608
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
BOOL WINAPI RegisterShellHookWindow(_In_ HWND)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
#define WM_NCCREATE
Definition: winuser.h:1683
#define WM_SETTINGCHANGE
Definition: winuser.h:1629
#define WM_TIMER
Definition: winuser.h:1742
#define WM_NCDESTROY
Definition: winuser.h:1684
#define WM_DESTROY
Definition: winuser.h:1609
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)

◆ QueryStatus()

HRESULT STDMETHODCALLTYPE CSysTray::QueryStatus ( const GUID pguidCmdGroup,
ULONG  cCmds,
OLECMD  prgCmds[],
OLECMDTEXT pCmdText 
)
virtual

Implements IOleCommandTarget.

Definition at line 294 of file csystray.cpp.

295{
297 return S_OK;
298}
#define UNIMPLEMENTED
Definition: debug.h:115

◆ s_SysTrayThreadProc()

DWORD WINAPI CSysTray::s_SysTrayThreadProc ( PVOID  param)
staticprivate

Definition at line 230 of file csystray.cpp.

231{
232 CSysTray * st = (CSysTray*) param;
233 return st->SysTrayThreadProc();
234}
HRESULT SysTrayThreadProc()
Definition: csystray.cpp:253
GLfloat param
Definition: glext.h:5796

Referenced by CreateSysTrayThread().

◆ ShutdownIcons()

HRESULT CSysTray::ShutdownIcons ( )
private

Definition at line 137 of file csystray.cpp.

138{
139 TRACE("Shutting down Notification icons...\n");
140 for (int i = 0; i < g_NumIcons; i++)
141 {
142 if (this->dwServicesEnabled & g_IconHandlers[i].dwServiceFlag)
143 {
144 this->dwServicesEnabled &= ~g_IconHandlers[i].dwServiceFlag;
147 }
148 }
149
150 MouseKeys_Shutdown(this);
151
152 return ShutdownNetShell();
153}
HRESULT ShutdownNetShell()
Definition: csystray.cpp:108
HRESULT STDMETHODCALLTYPE MouseKeys_Shutdown(_In_ CSysTray *pSysTray)
Definition: mouse.cpp:23
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
PFNSTSHUTDOWN pfnShutdown
Definition: precomp.h:53

Referenced by ProcessWindowMessage().

◆ ShutdownNetShell()

HRESULT CSysTray::ShutdownNetShell ( )
private

Definition at line 108 of file csystray.cpp.

109{
110 if (!pctNetShell)
111 return S_FALSE;
112 HRESULT hr = pctNetShell->Exec(&CGID_ShellServiceObject,
115 pctNetShell.Release();
116 return hr;
117}

Referenced by ShutdownIcons().

◆ SysTrayMessageLoop()

HRESULT CSysTray::SysTrayMessageLoop ( )
private

Definition at line 236 of file csystray.cpp.

237{
238 BOOL ret;
239 MSG msg;
240
241 while ((ret = GetMessage(&msg, NULL, 0, 0)) != 0)
242 {
243 if (ret < 0)
244 break;
245
248 }
249
250 return S_OK;
251}
#define msg(x)
Definition: auth_time.c:54
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define GetMessage
Definition: winuser.h:5790
#define DispatchMessage
Definition: winuser.h:5765

Referenced by SysTrayThreadProc().

◆ SysTrayThreadProc()

HRESULT CSysTray::SysTrayThreadProc ( )
private

Definition at line 253 of file csystray.cpp.

254{
255 WCHAR strFileName[MAX_PATH];
257 HMODULE hLib = LoadLibraryW(strFileName);
258
260
261 Create(NULL);
262
264
266
267 Release();
269}
HINSTANCE g_hInstance
Definition: MainWindow.cpp:18
@ Create
Definition: registry.c:563
HRESULT SysTrayMessageLoop()
Definition: csystray.cpp:236
#define MAX_PATH
Definition: compat.h:34
#define LoadLibraryW(x)
Definition: compat.h:747
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
VOID WINAPI FreeLibraryAndExitThread(HMODULE hLibModule, DWORD dwExitCode)
Definition: loader.c:507
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
Definition: compobj.c:2002
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
ULONG Release()
@ COINIT_APARTMENTTHREADED
Definition: objbase.h:278
@ COINIT_DISABLE_OLE1DDE
Definition: objbase.h:280
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by s_SysTrayThreadProc().

◆ UpdateIcons()

HRESULT CSysTray::UpdateIcons ( )
private

Definition at line 155 of file csystray.cpp.

156{
157 TRACE("Updating Notification icons...\n");
158 for (int i = 0; i < g_NumIcons; i++)
159 {
160 if (this->dwServicesEnabled & g_IconHandlers[i].dwServiceFlag)
161 {
163 if (FAILED(hr))
164 return hr;
165 }
166 }
167
168 return S_OK;
169}
PFNSTUPDATE pfnUpdate
Definition: precomp.h:54

Referenced by ProcessWindowMessage().

Member Data Documentation

◆ dwServicesEnabled

DWORD CSysTray::dwServicesEnabled
private

◆ pctNetShell

CComPtr<IOleCommandTarget> CSysTray::pctNetShell
private

Definition at line 27 of file csystray.h.

Referenced by InitNetShell(), and ShutdownNetShell().

◆ wm_DESTROYWINDOW

UINT CSysTray::wm_DESTROYWINDOW
private

Definition at line 33 of file csystray.h.

Referenced by CSysTray(), DestroySysTrayWindow(), and ProcessWindowMessage().

◆ wm_SHELLHOOK

UINT CSysTray::wm_SHELLHOOK
private

Definition at line 32 of file csystray.h.

Referenced by CSysTray(), and ProcessWindowMessage().


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