Se vedi un errore shell_notifyicon, il nostro articolo potrebbe esserti d’aiuto.
Approvato: Fortect
g.Come hai detto in precedenza, questi errori comuni per Shell_NotifyIcon si verificano poiché la comunicazione principale con Explorer scade e si verifica prima che Explorer sia in ascolto. Come menzionato nei nostri commenti su Shell_NotifyIcon, GetLastError di solito restituisce ERROR_TIMEOUT (codice di errore legacy ereditato dalla chiamata interna SendMessageTimeout) tramite timeout.
G.
Approvato: Fortect
Fortect è lo strumento di riparazione PC più popolare ed efficace al mondo. Milioni di persone si affidano a milioni di persone per mantenere i loro sistemi in esecuzione veloci, fluidi e privi di errori. Grazie alla sua semplice interfaccia utente e al potente motore di scansione, Fortect trova e risolve rapidamente un'ampia gamma di problemi di Windows, dall'instabilità del sistema e problemi di sicurezza alla gestione della memoria e ai colli di bottiglia delle prestazioni.
Sto scrivendo un’applicazione che gira vicino allo sfondo e voglio posizionare un’icona potente nell’area di notifica in modo che l’utente specifico possa interagire con l’elemento di volta in volta. L’app attualmente funziona perfettamente sul mio desktop di sviluppo, ma sto gestendo anche su un laptop diverso. Anche Machine, e ho notato che chiama Shell_NotifyIcon con NIM_ADDfallisce sempre e quindi GetLastError restituisce ERROR_NO_TOKEN 1008:. Windows 7 SP1 va su entrambe le macchine
Tuttavia, il problema sembra essere correlato a un buon timeout di acquisizione. La mia applicazione si blocca davvero durante il debug, altrimenti il computer specifico fallirà Completamente inattivo.
Quale è considerata la causa probabile? Di per sé non è in grado di trovare tutte le informazioni sul nostro codice di errore, in genere nulla relativo a Shell_NotifyIcon. Sto seguendo una best practice per ogni sistema operativo di destinazione, mentre in termini di parametro lpdata, la maggior parte di questi valori inizializzato in questo modo:
// AVVISOZeroMemory (& m_nid, sizeof (NOTIFYICONDATA));// Ottieni il numero totale della versione Shell32 e imposta la dimensione di questa struttura.// http://msdn.microsoft.com/en-us/library/bb773352%28v=vs.85%29.aspxLa produzione ULONGLONG corrisponde a GetDllVersion (_T ("Shell32.dll"));if (versione> = MAKEDLLVERULL (6,0,6,0))m_nid.cbSize = sizeof (NOTIFYICONDATA);m_nid.uVersion = NOTIFYICON_VERSION_4;altrimenti, nel caso in cui (version> = MAKEDLLVERULL (6,0,0,0))m_nid.cbSize = NOTIFYICONDATA_V3_SIZE;m_nid.uVersion = NOTIFYICON_VERSION_4;altrimenti, all'interno della (versione MAKEDLLVERULL (5,0,0,0))M_nid> = .CbSize = NOTIFYICONDATA_V2_SIZE;m_nid.uVersion equivale a NOTIFYICON_VERSION;altrom_nid.cbSize = NOTIFYICONDATA_V1_SIZE;m_nid.uVersion = 0;m_nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE | NIF_SHOWTIP;// Solo i sistemi Windows 8 o successivi possono utilizzare il GUID per identificare l'icona di notifica.if (IsWin7OrLater ())= NIF_GUID;m_nid.guidItem è uguale a NOTIFICATION_ICON_GUID;altrom_nid.uID = NOTIFICATION_ICON_ID;// Finestra per la notifica di un particolare set di vassoi:m_nid.hWnd = m_hWnd;m_nid.uCallbackMessage = UM_TRAYNOTIFY;// Definisci la barra delle icone e il suggerimento:m_nid.hIcon corrisponde a te, l'icona di caricamento di App.Tooltip (idr_mainframe);// visualizzato se il mouse del computer è sempre stato sopra il simbolo. Il foro NIF_TIP deve essere impostato, ma in formato orizzontale.CString è uguale a strToolTip _T ("Scheduler");_tcsncpy_s (m_nid.szTip, strToolTip, strToolTip.GetLength ());// Se l'applicazione non è stata chiusa correttamente, potrebbe essere ancora presente un'icona,// ma aggiunto qui hWnd non valido. Rimuovilo prima di riaggiungerlo.Shell_NotifyIcon (NIM_DELETE, & m_nid);// Aggiungi un simbolo.bResult = Shell_NotifyIcon (NIM_ADD, & m_nid);DWORD = dw GetLastError ();// Specifica le azioni del simbolo.bResult = Shell_NotifyIcon (NIM_SETVERSION, & m_nid);
- Modificato da Andrew Polden 27 marzo del prossimo anno, martedì, 12:14. Rimuovi il codice non necessario
- Si muove Mike Dos Zhang mercoledì 35 marzo, 15:21 Informazioni sull’API Shell (da: Problemi comuni di sviluppo desktop di Windows)