vc 刷新系統托盤圖示(原創)
阿新 • • 發佈:2019-01-02
/************************************************************************/
/* 該函式主要是實現對系統托盤的圖示重新整理的問題 */
/* */
/* 由於托盤程式如果被強行殺掉程序等操作後,在托盤中的圖示不能自動刪除 */
/* 顧運用以下的方法,實現模擬滑鼠點選托盤圖示,使得圖示重新整理 */
/* */
/* 使用方法: 直接呼叫 RefurbishTray 函式就可以了 */
/* 作 者: Richard */
/* 日 期: 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 */ /* 郵 箱:
/* 日 期: 2006-11-06 */
/************************************************************************/
HWND CGreenSpanDlg::GetSysTrayWnd()
{
HWND hwnd ;
hwnd = ::FindWindow("Shell_TrayWnd", NULL ) ;
hwnd = ::FindWindowEx(hwnd, 0, "TrayNotifyWnd", NULL ); return hwnd ;
}