原文链接:http://blog.csdn.net/liuxucoder/article/details/41725463
//任务栏窗口
HWND hShellTrayWnd = ::FindWindow(_T("Shell_TrayWnd"),NULL);
//任务栏右边托盘图标+时间区
HWND hTrayNotifyWnd = ::FindWindowEx(hShellTrayWnd,0,_T("TrayNotifyWnd"),NULL);
//不同系统可能有可能没有这层
HWND hSysPager = ::FindWindowEx(hTrayNotifyWnd,0,_T("SysPager"),NULL);
//托盘图标窗口
HWND hToolbarWindow32;
if (hSysPager) {
hToolbarWindow32 = ::FindWindowEx(hSysPager,0,_T("ToolbarWindow32"),NULL);
}
else {
hToolbarWindow32 = ::FindWindowEx(hTrayNotifyWnd,0,_T("ToolbarWindow32"),NULL);
}
if (hToolbarWindow32) {
RECT rect_bar;
::GetWindowRect(hToolbarWindow32,&rect_bar);
int width = rect_bar.right - rect_bar.left;
int height = rect_bar.bottom - rect_bar.top;
//从任务栏中间从左到右 MOUSEMOVE一遍,所有图标状态会被更新
for (int x = 1; x<width; x++) {
::SendMessage(hToolbarWindow32,WM_MOUSEMOVE,0,MAKELPARAM(x,height/2));
}
}