Wenn der neue shell_notifyicon-Fehler angezeigt wird, kann dieser Artikel hilfreich sein.
Genehmigt: Fortect
g.Wie die Öffentlichkeit bereits erwähnt hat, treten diese häufigen Fehler für Shell_NotifyIcon auf, wenn die Hauptkommunikation mit Explorer Zeitintervalle überschreitet oder auftritt, bevor Explorer lauscht. Wie in den Kommentaren zu Shell_NotifyIcon erwähnt, zahlt GetLastError normalerweise ERROR_TIMEOUT (vom internen SendMessageTimeout-Aufruf geerbter Legacy-Fehlercode) bei Zeitüberschreitung zurück.
g.
Genehmigt: Fortect
Fortect ist das weltweit beliebteste und effektivste PC-Reparaturtool. Millionen von Menschen vertrauen darauf, dass ihre Systeme schnell, reibungslos und fehlerfrei laufen. Mit seiner einfachen Benutzeroberfläche und leistungsstarken Scan-Engine findet und behebt Fortect schnell eine breite Palette von Windows-Problemen - von Systeminstabilität und Sicherheitsproblemen bis hin zu Speicherverwaltung und Leistungsengpässen.
Ich schreibe eine Anwendung, die im Hintergrund läuft und ich möchte, dass Sie ein Symbol im Benachrichtigungsbereich platzieren können, damit der Benutzer von Zeit zu Zeit mit der Verbindung interagieren kann. Die App funktioniert im Allgemeinen gut auf meinem Entwicklungsdesktop, aber ich arbeite auch an einem anderen Laptop. Maschine seitdem, und ich habe bemerkt, dass Shell_NotifyIcon mit NIM_ADD aufgerufen wirdschlägt immer fehl und GetLastError gibt ERROR_NO_TOKEN 1008: zurück. Windows ein paar SP1 funktioniert auf beiden Maschinen
Das eigentliche Problem scheint jedoch mit einem höheren Download-Timeout zusammenzuhängen. Meine Anwendung stürzt wirklich beim Debuggen ab, sonst fällt der Computer komplett im Leerlauf aus.
Was ist die wahrscheinliche Ursache? An sich keine Informationen über unseren eigenen Fehlermodus finden, zumindest nichts im Zusammenhang mit Shell_NotifyIcon. ich ein. m . Befolgen Sie die Best Practices für jedes Zielbetriebssystem in Bezug auf den lpdata-Parameter, die meisten dieser Werte so initialisiert:
// HINWEISZeroMemory (& m_nid, sizeof (NOTIFYICONDATA));// Rufen Sie die Shell32-Versionsnummer ab und legen Sie die Größe des Strukturtyps fest.// http://msdn.microsoft.com/en-us/library/bb773352%28v=vs.85%29.aspxULONGLONG-Version entspricht GetDllVersion (_T ("Shell32.dll"));if (version> ist gleich MAKEDLLVERULL (6,0,6,0))m_nid.cbSize = sizeof (NOTIFYICONDATA);m_nid.uVersion = NOTIFYICON_VERSION_4;andernfalls if (version> = MAKEDLLVERULL (6,0,0,0))m_nid.cbSize = NOTIFYICONDATA_V3_SIZE;m_nid.uVersion bedeutet NOTIFYICON_VERSION_4;andernfalls, wenn (MAKEDLLVERULL-Version (5,0,0,0))M_nid> = .CbSize bedeutet NOTIFYICONDATA_V2_SIZE;m_nid.uVersion = NOTIFYICON_VERSION;Ein weitererm_nid.cbSize = NOTIFYICONDATA_V1_SIZE;m_nid.uVersion = 0;m_nid.uFlags bedeutet NIF_ICON | NIF_TIP | NIF_MESSAGE | NIF_SHOWTIP;// Nur Windows 7 oder neuere Systeme können einen Teil der GUID verwenden, um das Benachrichtigungssymbol zu identifizieren.if (IsWin7OrLater ())= NIF_GUID;m_nid.guidItem = NOTIFICATION_ICON_GUID;Ein weitererm_nid.uID = NOTIFICATION_ICON_ID;// Fenster für Benachrichtigungen über eine Reihe von Fächern:m_nid.hWnd = m_hWnd;m_nid.uCallbackMessage impliziert UM_TRAYNOTIFY;// Definieren Sie die Symbolleiste und den Tooltip:m_nid.hIcon stimmt mit dem App.Tooltip-Ladesymbol (idr_mainframe) überein;// wird offensichtlich angezeigt, wenn sich die Maus immer über dem Symbol befand. Das Flag NIF_TIP muss gesetzt werden, jedoch im vis-Format.CString = strToolTip _T ("Scheduler");_tcsncpy_s (m_nid.szTip, strToolTip, strToolTip.GetLength ());// Wenn die Anwendung nicht richtig geschlossen wurde, kann das Symbol noch vorhanden sein,// einfach jetzt ungültiges hWnd hinzugefügt. Entfernen Sie es, bevor Sie es erneut hinzufügen.Shell_NotifyIcon (NIM_DELETE, & m_nid);// Füge ein Symbol hinzu.bResult ist gleich Shell_NotifyIcon (NIM_ADD, & m_nid);DWORD = dw GetLastError ();// Geben Sie die Aktionen des Symbols an.bResult = Shell_NotifyIcon (NIM_SETVERSION, & m_nid);
- Bearbeitet von Andrew Polden 27. März nächsten Jahres, Dienstag, 12:14 Uhr. Zusatzcode entfernen
- Bewegt sich Mike Dos Zhang Mittwoch, 28. März, 15:21 Uhr Shell-API-Frage (von: Häufige Probleme bei der Windows-Desktopentwicklung)