Dieses Problem hat mich schon eine ganze Weile getroffen und es war wirklich nervig.
Jedes Mal, wenn ich mich nach einem Neustart / Neustart anmeldes, braucht der Explorer etwas Zeit, um zu erscheinen. Ich habe den Schritt gemacht, auf alle Dienste zu warten, um zu starten, und dann logge ich mich ein, aber es macht keinen Unterschied. Das Ergebnis ist immer das gleiche: Einige der Symbole werden nicht angezeigt, selbst wenn die Anwendungen gestartet wurden.
Ich habe ein bisschen nach dem Code geforscht, der eine Anwendung dazu bringt, ein Icon dort zu "kleben", aber gibt es einen API-Aufruf, den man ausführen kann, so dass der Explorer all diese Icon-Informationen erneut liest? Wie Ungültigmachen oder Neuzeichnen oder etwas Ähnliches?
Anscheinend sieht es so aus, als hätte Jon Recht und es ist nicht möglich.
Ich habe Bob Dizzle und Mark Ransom Code gefolgt und baue dies (Delphi Code):
%Vor%Aber ohne Erfolg.
Ich habe es sogar mit
probiertprocedure 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;
und immer noch nicht angezeigt.
Irgendwelche anderen Vorschläge?
Sehen Sie sich diesen Blog-Eintrag an: ERFRISCHEN SIE DEN TASKBAR-BENACHRICHTIGUNGSBEREICH . Ich verwende diesen Code, um die Taskleiste zu aktualisieren, um verwaiste Symbole loszuwerden, und es funktioniert perfekt. Der Blogeintrag ist sehr informativ und gibt eine großartige Erklärung der Schritte, die der Autor unternommen hat, um seine Lösung zu finden.
%Vor%Zwei wichtige Details für jeden, der Louis 'Antwort verwendet (aus ERFRISCHEND AUF DEN TASKBAR-BENACHRICHTIGUNGSBEREICH ) unter Windows 7 oder Windows 8:
Erstens, da die Antwort zu sehen war, heißt das Fenster mit dem Titel "Notification Area" in XP jetzt "User Promoted Notification Area" in Windows 7 (wahrscheinlich Vista) und höher.
Zweitens löscht dieser Code keine Symbole, die derzeit ausgeblendet sind. Diese sind in einem separaten Fenster enthalten. Verwenden Sie den Originalcode, um sichtbare Symbole zu aktualisieren, und Folgendes, um ausgeblendete Symbole zu aktualisieren.
%Vor%Für jeden, der nur ein Dienstprogramm benötigt, um dies zu tun, anstatt Code, ich baute eine einfache exe mit diesem Update: Benachrichtigungsbereich aktualisieren
Fügen Sie den folgenden Code zu Ihrem hinzu, um die Taskleiste zu aktualisieren.
%Vor%Soweit ich weiß, ist das nicht möglich Gustavo - es liegt an jedem Antrag, sein Benachrichtigungssymbol in den Systray zu legen und sicherzustellen, dass es im richtigen Zustand gehalten wird.
Sie werden manchmal feststellen, dass explorer.exe abstürzt, wenn bestimmte Symbole nicht wieder auftauchen - das liegt nicht daran, dass ihr Prozess abgestürzt ist, sondern einfach, dass ihre Anwendung das Benachrichtigungssymbol nicht in den Systray gesetzt hat, wenn die neue Instanz von explorer .exe wurde gestartet. Noch einmal, es ist die Anwendung, die dafür verantwortlich ist.
Tut mir leid, keine besseren Nachrichten für Sie zu haben!
Ich habe dieses Thema letztes Jahr in meinem Codeaholic Weblog in einem Artikel mit dem Titel [Delphi] Aktualisierung von SysTray .
Meine Lösung ist eine Delphi ActiveX / COM DLL. Der Download-Link funktioniert immer noch (obwohl ich nicht mehr weiß, wie meine PLUG Mitgliedschaft abgelaufen ist.)
Ich benutze den folgenden C ++ - Code, um den Fenstergriff zum Tray-Fenster zu bringen. Hinweis: Dies wurde nur unter Windows XP getestet.
%Vor%
Tags und Links icons windows-explorer system-tray systray