Definition at line 56 of file syspager.cpp.
◆ CIconWatcher()
| CIconWatcher::CIconWatcher |
( |
| ) |
|
◆ ~CIconWatcher()
| CIconWatcher::~CIconWatcher |
( |
| ) |
|
|
virtual |
Definition at line 282 of file syspager.cpp.
283{
286
291}
CRITICAL_SECTION m_ListLock
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
◆ AddIconToWatcher()
Definition at line 338 of file syspager.cpp.
339{
342
346 {
347 return false;
348 }
349
353
354 bool Added = false;
356
357
358
359
361 {
364 Added = true;
365 }
366
368
369 if (!Added)
370 {
371 delete Icon;
372 }
373
374 return Added;
375}
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 391 of file syspager.cpp.
392{
396 do
397 {
399
402 {
403 if ((iconData && ((
Entry->IconData.hWnd == iconData->hWnd) && (
Entry->IconData.uID == iconData->uID))) ||
405 {
408 break;
409 }
410 }
412
413 }
while (NextPosition !=
NULL);
414
416}
POSITION GetHeadPosition() const
E & GetNext(_Inout_ POSITION &pos)
void RemoveAt(_In_ POSITION pos)
◆ Initialize()
Definition at line 293 of file syspager.cpp.
294{
296
300 return false;
301
303 0,
306 0,
309 return false;
310
311 return true;
312}
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 377 of file syspager.cpp.
378{
380
383
386
387 delete Icon;
388 return true;
389}
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 314 of file syspager.cpp.
315{
319
321
324 {
327 {
330 delete Icon;
331 }
332 }
334
336}
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 418 of file syspager.cpp.
419{
422
425 {
427
429 Size =
This->m_WatcherList.GetCount() + 1;
431
432 if (WatchList)
433 delete[] WatchList;
435 WatchList[0] =
This->m_WakeUpEvent;
436
438 for (
size_t i = 0;
i <
This->m_WatcherList.GetCount();
i++)
439 {
440 Pos =
This->m_WatcherList.FindIndex(
i);
442 {
444 Icon =
This->m_WatcherList.GetAt(
Pos);
446 }
447 }
448
450
453 WatchList,
457 {
458
460 TRACE(
"Updating watched icon list\n");
461 }
463 {
466
467 TRACE(
"Pid %lu owns a notification icon and has stopped without deleting it. We'll cleanup on its behalf\n", Icon->
ProcessId);
468
469 TRAYNOTIFYDATAW tnid = {0};
470 tnid.dwSignature = NI_NOTIFY_SIG;
473
476 data.cbData =
sizeof(tnid);
478
482 {
483
485 }
486 }
487 else
488 {
490 {
492 }
493 ERR(
"Failed to wait on process handles : %lu\n",
Status);
494 This->Uninitialize();
495 }
496 }
497
498 if (WatchList)
499 delete[] WatchList;
500
501 return 0;
502}
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: