Pouvez-vous envoyer un signal à l'Explorateur Windows pour vous d'actualiser les icônes du systray?

Ce problème a été affligeant moi pour un bon moment et c'est vraiment ennuyeux.

Chaque fois que je me connecte après un redémarrage/alimentation cycle de l'explorateur prend un certain temps à se manifester.
J'ai pris l'initiative d'attente pour tous les services pour le démarrage, puis-je me connecter, mais il ne fait aucune différence.
Le résultat est toujours le même: Certaines icônes ne s'affichent pas même si les applications ont commencé.

J'ai creusé un peu sur le code qui permet une application "coller" une icône de là, mais est-il un appel d'API que l'on peut effectuer afin de pouvoir explorer le relis tout ce que l'icône info? Comme invalider ou de redessiner ou quelque chose du genre?


Apparemment, il semble que Jon était juste et il n'est pas possible de le faire.

J'ai suivi Bob Dizzle et Marque Rançon code et construire (Code Delphi):

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;

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

Mais en vain.

J'ai même essayé avec

InvalidateRect()

et toujours pas de spectacle.

Toutes les autres suggestions?

OriginalL'auteur Gustavo Carreno | 2008-09-16