1. 程式人生 > >vc 刷新系統托盤圖示(原創)

vc 刷新系統托盤圖示(原創)

/************************************************************************/
/*       該函式主要是實現對系統托盤的圖示重新整理的問題                     */
/*                                                                      */
/*  由於托盤程式如果被強行殺掉程序等操作後,在托盤中的圖示不能自動刪除  */
/*  顧運用以下的方法,實現模擬滑鼠點選托盤圖示,使得圖示重新整理            */
/*                                                                      */
/*  使用方法: 直接呼叫   RefurbishTray 函式就可以了                    */
/*  作    者: Richard                                                     */

/*  郵    箱: [email protected]                                        */
/*  日    期: 2006-11-06                                               */
/************************************************************************/ void CGreenSpanDlg::RefurbishTray()
{
 RECT   WindowRect ;
 POINT point  ;
 int x ;
 int y ;
// int SmallIconWidth , SmallIconHeight ;
// SmallIconWidth  = GetSystemMetrics(SM_CXSMICON);
//    SmallIconHeight = GetSystemMetrics(SM_CYSMICON);  HWND hwnd = GetSysTrayWnd()  ;
 ::GetWindowRect(hwnd , &WindowRect ) ;
 ::GetCursorPos(&point) ;  for( x = 1 ; x < WindowRect.right - WindowRect.left - 1  ; x ++  )
 {
  for( y = 1 ; y < WindowRect.bottom - WindowRect.top - 1 ; y ++  )
  {
   SetCursorPos( WindowRect.left + x, WindowRect.top + y ) ;
   Sleep(0);
  }  } // SetCursorPos(SmallIconWidth,SmallIconHeight);
}  /************************************************************************/
/*       該函式主要是獲取系統托盤控制代碼                                   */
/*                                                                      */
/*  這個方法只支援NT以上的版本,如果是NT 以下的版本,則需要根據
/*  工作列視窗以及其子視窗結構  修改                                    */
/*  作    者: Richard                                                     */ /*  郵    箱:
[email protected]
                                        */
/*  日    期: 2006-11-06                                               */
/************************************************************************/
HWND CGreenSpanDlg::GetSysTrayWnd()
{
 
 HWND hwnd ;
 hwnd = ::FindWindow("Shell_TrayWnd", NULL ) ;
 
 hwnd = ::FindWindowEx(hwnd, 0, "TrayNotifyWnd", NULL );  return hwnd ;
}