相关疑难解决方法(0)

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

这个问题困扰了我很长一段时间,这真的很烦人.

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

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


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

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

procedure Refresh;
var
  hSysTray: THandle;
begin
  hSysTray := GetSystrayHandle;
  SendMessage(hSysTray, WM_PAINT, 0, 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, 0, 'TrayNotifyWnd', '');
  if hNotify = 0 then
  begin
    Result := hNotify;
    exit;
  end;

  hSyspager := FindWindowEx(hNotify, 0, 'SysPager', '');
  if hSyspager = 0 then
  begin
    Result := hSyspager;
    exit;
  end; …
Run Code Online (Sandbox Code Playgroud)

icons windows-explorer system-tray systray

11
推荐指数
2
解决办法
2万
查看次数

标签 统计

icons ×1

system-tray ×1

systray ×1

windows-explorer ×1