加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

您可以向Windows资源管理器发送信号以刷新系统托盘图标吗?

发布时间:2020-12-13 23:00:34 所属栏目:Windows 来源:网络整理
导读:这个问题困扰了我很长一段时间,这真的很烦人. 每次我在重新启动/重启后登录时,资源管理器都会花费一些时间来显示. 我已经采取了等待所有服务启动然后我登录的步骤,但它没有任何区别. 结果始终相同:即使应用程序已启动,某些图标也不会显示. 我已经挖了一些代
这个问题困扰了我很长一段时间,这真的很烦人.

每次我在重新启动/重启后登录时,资源管理器都会花费一些时间来显示.
我已经采取了等待所有服务启动然后我登录的步骤,但它没有任何区别.
结果始终相同:即使应用程序已启动,某些图标也不会显示.

我已经挖了一些代码,让一个应用程序“粘贴”在那里的一个图标,但是有一个API调用可以执行,所以资源管理器重新读取所有图标信息?像无效或重绘或类似的东西?

显然,看起来乔恩是对的,这是不可能做到的.

我遵循了Bob Dizzle和Mark Ransom代码并构建了这个(Delphi Code):

procedure Refresh;
var
  hSysTray: THandle;
begin
  hSysTray := GetSystrayHandle;
  SendMessage(hSysTray,WM_PAINT,0);
end;

function GetSystrayHandle: THandle;
var
  hTray,hNotify,hSysPager: THandle;
begin
  hTray := FindWindow('Shell_TrayWnd','');
  if hTray = 0 then
  begin
    Result := hTray;
    exit;
  end;

  hNotify := FindWindowEx(hTray,'TrayNotifyWnd','');
  if hNotify = 0 then
  begin
    Result := hNotify;
    exit;
  end;

  hSyspager := FindWindowEx(hNotify,'SysPager','');
  if hSyspager = 0 then
  begin
    Result := hSyspager;
    exit;
  end;

  Result := FindWindowEx(hSysPager,'ToolbarWindow32','Notification Area');
end;

但无济于事.

我甚至尝试过

InvalidateRect()

仍然没有表现.

还有其他建议吗?

看一下这篇博客文章: REFRESHING THE TASKBAR NOTIFICATION AREA.我正在使用此代码刷新系统托盘以摆脱孤立的图标,它完美无缺.
博客文章内容丰富,并对作者发现其解决方案所采取的步骤进行了很好的解释.
#define FW(x,y) FindWindowEx(x,NULL,y,L"")

void RefreshTaskbarNotificationArea()
{
    HWND hNotificationArea;
    RECT r;

    GetClientRect(
        hNotificationArea = FindWindowEx(
            FW(FW(FW(NULL,L"Shell_TrayWnd"),L"TrayNotifyWnd"),L"SysPager"),L"ToolbarWindow32",// L"Notification Area"),// Windows XP
            L"User Promoted Notification Area"),// Windows 7 and up
        &r);

    for (LONG x = 0; x < r.right; x += 5)
        for (LONG y = 0; y < r.bottom; y += 5)
            SendMessage(
                hNotificationArea,WM_MOUSEMOVE,(y << 16) + x);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读