Definition at line 61 of file syspager.cpp.
◆ CIconWatcher()
| CIconWatcher::CIconWatcher |
( |
| ) |
|
◆ ~CIconWatcher()
| CIconWatcher::~CIconWatcher |
( |
| ) |
|
|
virtual |
Definition at line 290 of file syspager.cpp.
291{
294
299}
CRITICAL_SECTION m_ListLock
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
◆ AddIconToWatcher()
Definition at line 346 of file syspager.cpp.
347{
350
354 {
355 return false;
356 }
357
361
362 bool Added = false;
364
365
366
367
369 {
372 Added = true;
373 }
374
376
377 if (!Added)
378 {
379 delete Icon;
380 }
381
382 return Added;
383}
POSITION AddTail(INARGTYPE element)
CAtlList< IconWatcherData * > m_WatcherList
HANDLE WINAPI OpenProcess(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwProcessId)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
_In_ BOOL _In_ HANDLE hProcess
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define MAXIMUM_WAIT_OBJECTS
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
Referenced by CSysPagerWnd::NotifyIcon().
◆ GetListEntry()
Definition at line 399 of file syspager.cpp.
400{
403 {
407 {
408 if ((iconData && ((
Entry->IconData.hWnd == iconData->hWnd) && (
Entry->IconData.uID == iconData->uID))) ||
410 {
414 }
415 }
416 }
418}
POSITION GetHeadPosition() const
E & GetNext(_Inout_ POSITION &pos)
void RemoveAt(_In_ POSITION pos)
◆ Initialize()
Definition at line 301 of file syspager.cpp.
302{
304
308 return false;
309
311 0,
314 0,
317 return false;
318
319 return true;
320}
static UINT WINAPI WatcherThread(_In_opt_ LPVOID lpParam)
_ACRTIMP uintptr_t __cdecl _beginthreadex(void *, unsigned int, _beginthreadex_start_routine_t, void *, unsigned int, unsigned int *)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
Referenced by CSysPagerWnd::OnCreate().
◆ RemoveIconFromWatcher()
Definition at line 385 of file syspager.cpp.
386{
388
391
394
395 delete Icon;
396 return true;
397}
IconWatcherData * GetListEntry(_In_opt_ CONST NOTIFYICONDATA *iconData, _In_opt_ HANDLE hProcess, _In_ bool Remove)
Referenced by CSysPagerWnd::NotifyIcon().
◆ Uninitialize()
| void CIconWatcher::Uninitialize |
( |
| ) |
|
Definition at line 322 of file syspager.cpp.
323{
327
329
332 {
335 {
338 delete Icon;
339 }
340 }
342
344}
E & GetAt(_In_ POSITION pos)
POSITION FindIndex(_In_ size_t iElement) const
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
Referenced by CSysPagerWnd::OnDestroy().
◆ WatcherThread()
Definition at line 420 of file syspager.cpp.
421{
424
427 {
429
431 Size =
This->m_WatcherList.GetCount() + 1;
433
434 if (WatchList)
435 delete[] WatchList;
437 WatchList[0] =
This->m_WakeUpEvent;
438
440 for (
size_t i = 0;
i <
This->m_WatcherList.GetCount();
i++)
441 {
442 Pos =
This->m_WatcherList.FindIndex(
i);
444 {
446 Icon =
This->m_WatcherList.GetAt(
Pos);
448 }
449 }
450
452
455 WatchList,
459 {
460
462 TRACE(
"Updating watched icon list\n");
463 }
465 {
468
469 TRACE(
"Pid %lu owns a notification icon and has stopped without deleting it. We'll cleanup on its behalf\n", Icon->
ProcessId);
470
471 TRAYNOTIFYDATAW tnid = {0};
472 tnid.dwSignature = NI_NOTIFY_SIG;
475
478 data.cbData =
sizeof(tnid);
480
484 {
485
487 }
488 }
489 else
490 {
492 {
494 }
495 ERR(
"Failed to wait on process handles : %lu\n",
Status);
496 This->Uninitialize();
497 }
498 }
499
500 if (WatchList)
501 delete[] WatchList;
502
503 return 0;
504}
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
DWORD WINAPI WaitForMultipleObjects(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
DWORD WINAPI GetLastError(void)
◆ m_hWatcherThread
| HANDLE CIconWatcher::m_hWatcherThread |
|
private |
◆ m_hwndSysTray
| HWND CIconWatcher::m_hwndSysTray |
|
private |
◆ m_ListLock
◆ m_Loop
| bool CIconWatcher::m_Loop |
|
private |
◆ m_WakeUpEvent
| HANDLE CIconWatcher::m_WakeUpEvent |
|
private |
◆ m_WatcherList
The documentation for this class was generated from the following file: