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
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à cette entrée de blog: L'ACTUALISATION DE LA ZONE DE NOTIFICATION DE LA BARRE DES TÂCHES. J'utilise ce code pour actualiser la barre d'état système pour se débarrasser des orphelins, des icônes et il fonctionne parfaitement.
L'entrée de blog est très instructif et donne une bonne explication des étapes de l'auteur réalisée pour découvrir sa solution.
J'ai quelques doutes sur le dernier paramètre "Zone de Notification" fonctionne sur les versions de Windows.
dummzeuch est correct. La "Zone de Notification" de la chaîne devront être localisées pour la langue de Windows.
OriginalL'auteur Louis Davis
Deux détails importants pour toute personne utilisant Louis réponse (à partir de L'ACTUALISATION DE LA ZONE DE NOTIFICATION DE LA BARRE DES TÂCHES) sur Windows 7 ou Windows 8:
Tout d'abord, que la réponse a été traduit pour montrer, la fenêtre intitulée "Zone de Notification" dans XP est désormais intitulée "Utilisateur Promu Zone de Notification dans Windows 7 (en fait, probablement Vista) et.
Seconde, ce code n'est pas clair icônes qui sont actuellement cachés. Ils sont contenus dans une fenêtre séparée. Utiliser le code d'origine pour actualiser les icônes visibles, et les suivantes pour actualiser les icônes masquées.
Pour quelqu'un qui a juste besoin d'un utilitaire pour exécuter pour ce faire, plutôt que de code, j'ai construit un simple exe avec cette mise à jour: Actualisation De La Zone De Notification
Merci! Ce formidable outil fonctionne parfaitement, même après 4 ans de mises à jour de windows!
OriginalL'auteur Stephen Klancher
Inclure de code suivant à la vôtre afin d'actualiser la barre d'état Système.
OriginalL'auteur Bob Dizzle
Autant que je sache, ce n'est pas possible Gustavo - c'est à chaque demande de mettre son notifyicon dans le systray, et de s'assurer qu'il est maintenu dans le droit de l'état.
Vous remarquerez parfois, quand explorer.exe les plantages que certaines icônes ne réapparaît pas - ce n'est pas parce que leur processus est en panne, il suffit que leur demande n'a pas mis la notifyicon dans la barre d'état système lorsque la nouvelle instance de explorer.exe démarré. Encore une fois, c'est l'application qui est responsable.
Désolé de ne pas avoir de meilleures nouvelles pour vous!
OriginalL'auteur Jonathan Sayce
J'ai couvert ce problème l'année dernière sur mon Codeaholic blog dans un article intitulé [Delphi] Mise À Jour SysTray.
Ma solution est un Delphi DLL ActiveX/COM. Le lien de téléchargement fonctionne encore (mais pour combien de temps je ne sais pas car mon PLUG adhésion a expiré.)
Nouveau défi, mais dans le sens inverse: stackoverflow.com/questions/1114887/...
OriginalL'auteur bugmagnet
- Je utiliser le code C++ suivant pour obtenir le handle de fenêtre de la fenêtre de barre d'état. Remarque: cela a seulement été testé sur Windows XP.
OriginalL'auteur Mark Ransom
@Skip R, et toute autre personne voulant le faire en C, avec ce code vérifié compilé dans un récent (la plus récente) mingw sous Windows 10 64 bits (mais avec le mingw 32 bits installé), cela semble fonctionner sous Windows XP /2003 pour se débarrasser de gelée de notification les icônes de la zone.
J'ai installé mingw via Chocolaté, comme ceci:
(votre kilométrage peut varier, sur mon système, le compilateur a ensuite été installé, ici:
puis une simple
a abouti à une a.exe résoudre un rassis icône de zone de notification problème que j'ai sur Windows 2003 (32 bits).
Le code, adapté de @Stephen Klancher ci-dessus est (à noter qu'il ne fonctionne que sur Windows XP/2003, qui a répondu à mes fins):
OriginalL'auteur user2712225