int SetTrayHook(int iInstall) { if(iInstall == 1) { g_HD_Msg_GetIcon = RegisterWindowMessage(L"HD_Msg_GetIcon"); HWND hTrayWnd = FindTrayWnd(); DWORD dwExploreID = 0; dwExploreID = GetWindowThreadProcessId(hTrayWnd,NULL); hTrayHook = SetWindowsHookEx(WH_CALLWNDPROC,TrayHookProc,hInst,dwExploreID); if(hTrayHook == NULL) { OutputDebugString(L"Set SetTrayHook Failure!"); } #ifdef _HIDEPROCESS pDri = new CDriver; #endif } else { UnhookWindowsHookEx(hTrayHook); hTrayHook = NULL; #ifdef _HIDEPROCESS delete pDri; #endif } return 1; }
void CTrayIcon::OnTimer( UINT_PTR nIDEvent ) { if ( nIDEvent == _defFlashIconTimerID ) { if ( m_IsShowIcon ) { FlashIconData Data = DecideFlashIconData(); CIcon icon; icon.LoadIcon(Data.nIconNormal); ChangeIcon(icon); ChangeToolTip(Data.strTooltip); m_IsShowIcon = false; } else { FlashIconData Data = DecideFlashIconData(); CIcon icon; icon.LoadIcon(Data.nIconFlash); ChangeIcon(icon); ChangeToolTip(Data.strTooltip); m_IsShowIcon = true; } } else if ( nIDEvent == _defIconLeaveTimerID ) { POINT pt = {0}; RECT rc; GetCursorPos(&pt); if ( GetTrayIconRect(FindTrayWnd(), m_hNotifyWnd, &rc) == S_FALSE) { GetTrayIconRect(FindNotifyIconOverflowWindow(), m_hNotifyWnd, &rc); } if ( !PtInRect(&rc,pt) ) { BOOL b; OnTrayIconNotify(WM_TRAYICONNOTIFY, 0, WM_MOUSELEAVE, b); } } }