************************************************************************/
/* 該函數主要是實現對系統托盤的圖標刷新的問題 */
/* */
/* 由於托盤程序如果被強行殺掉進程等操作後,在托盤中的圖標不能自動刪除 */
/* 顧運用以下的方法,實現模擬鼠標點擊托盤圖標,使得圖標刷新 */
/* */
/* 使用方法: 直接調用 RefurbishTray 函數就可以了 */
/* 作 者: 阮洲 */
/* 郵 箱:
[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 以下的版本,則需要根據
/* 任務欄窗口以及其子窗口結構 修改 */
/* 作 者: 阮洲
; */
/* 郵 箱:
[email protected] */
/* 日 期: 2006-11-06 */
/************************************************************************/
HWND CGreenSpanDlg::GetSysTrayWnd()
{
HWND hwnd ;
hwnd = ::FindWindow("Shell_TrayWnd", NULL ) ;
hwnd = ::FindWindowEx(hwnd, 0, "TrayNotifyWnd", NULL );
return hwnd ;
}