刷新windows任务栏图标
private void RefreshTaskbarIcon()
{
//任务栏窗口
int hShellTrayWnd =FindWindow("Shell_TrayWnd","");
//任务栏右边托盘图标+时间区
IntPtr hTrayNotifyWnd = FindWindowEx((IntPtr)hShellTrayWnd,IntPtr.Zero,"TrayNotifyWnd","");
//不同系统可能有可能没有这层
IntPtr hSysPager = FindWindowEx(hTrayNotifyWnd,IntPtr.Zero,"SysPager","");
//托盘图标窗口
IntPtr hToolbarWindow32;
if ((int)hSysPager>0)
{
hToolbarWindow32 = FindWindowEx(hSysPager, IntPtr.Zero, "ToolbarWindow32", "用户升级的通知区域");
}
else
{
hToolbarWindow32 = FindWindowEx(hTrayNotifyWnd, IntPtr.Zero, "ToolbarWindow32", "");
}
if ((int)hToolbarWindow32>0)
{
Rect r;
GetWindowRect(hToolbarWindow32,out r);
int width = r.Right - r.Left;
int height =r.Bottom - r.Top;
//从任务栏中间从左到右 MOUSEMOVE一遍,所有图标状态会被更新
for (int x = 1; x<width; x++)
{
SendMessage(hToolbarWindow32,WM_MOUSEMOVE,0,MAKELPARAM(x,height/2));
}
}
}

浙公网安备 33010602011771号