Если клиенты видят ошибку shell_notifyicon, эта статья, скорее всего, поможет.
Одобрено: Fortect
ж.Как вы упомянули ранее, такие типичные ошибки для Shell_NotifyIcon возникают, когда время важного обмена данными с проводником истекает или происходит до того, как проводник прослушивает. Как упоминалось в комментариях к Shell_NotifyIcon, GetLastError обычно возвращает ERROR_TIMEOUT (устаревший номер ошибки, унаследованный от внутреннего вызова SendMessageTimeout) по истечении времени ожидания.
г.
Одобрено: Fortect
Fortect — самый популярный и эффективный в мире инструмент для ремонта ПК. Миллионы людей доверяют ему обеспечение быстрой, бесперебойной и безошибочной работы своих систем. Благодаря простому пользовательскому интерфейсу и мощному механизму сканирования Fortect быстро находит и устраняет широкий спектр проблем Windows — от нестабильности системы и проблем с безопасностью до проблем с управлением памятью и производительностью.
а>
Мне кажется, что я пишу приложение, которое работало в прошлом, и я хочу разместить значок вокруг области уведомлений, чтобы пользователь мог время от времени взаимодействовать с элементом. Приложение в настоящее время отлично работает на конкретном рабочем столе разработки, но я также работаю над другим ноутбуком. Машина тоже, и я заметил факт вызова Shell_NotifyIcon с помощью NIM_ADDвсегда терпит неудачу, и GetLastError возвращает налоги ERROR_NO_TOKEN 1008 :. Windows 7 SP1 часто работает на компьютерах
Однако проблема, похоже, в конечном итоге связана с хорошим тайм-аутом загрузки. Мое использование действительно дает сбой при отладке, иначе компьютер наверняка выйдет из строя.
Какова правильная причина? Сам по себе не может найти никакой информации, более или менее нашего собственного кода ошибки, по крайней мере, ничего не связанного с Shell_NotifyIcon. Я следую лучшим упражнениям для каждой целевой операционной системы с точки зрения параметра lpdata, большинство из этих значений инициализируется, например, так:
// УВЕДОМЛЕНИЕZeroMemory (& m_nid, sizeof (NOTIFYICONDATA));// Получить номер версии Shell32 и сопоставить размер этой структуры.// http://msdn.microsoft.com/en-us/library/bb773352%28v=vs.85%29.aspxВерсия ULONGLONG борется с GetDllVersion (_T ("Shell32.dll"));если (версия> = MAKEDLLVERULL (6,0,6,0))m_nid.cbSize означает sizeof (NOTIFYICONDATA);m_nid.uVersion = NOTIFYICON_VERSION_4;в противном случае, если (версия> = MAKEDLLVERULL (6,0,0,0))m_nid.cbSize = NOTIFYICONDATA_V3_SIZE;m_nid.uVersion = NOTIFYICON_VERSION_4;в противном случае, если (вариант MAKEDLLVERULL (5,0,0,0))M_nid> = .CbSize = NOTIFYICONDATA_V2_SIZE;m_nid.uVersion = NOTIFYICON_VERSION;Другаяm_nid.cbSize равно NOTIFYICONDATA_V1_SIZE;m_nid.uVersion = 0;m_nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE | NIF_SHOWTIP;// Только Windows 7 или системы установки могут использовать GUID для идентификации самого значка уведомления.если (IsWin7OrLater ())= NIF_GUID;m_nid.guidItem = NOTIFICATION_ICON_GUID;Другаяm_nid.uID подразумевает NOTIFICATION_ICON_ID;// Окно уведомления о наборе большинства лотков:m_nid.hWnd = m_hWnd;m_nid.uCallbackMessage = UM_TRAYNOTIFY;// Определение панели легенды и всплывающей подсказки:m_nid.hIcon соответствует значку потоковой передачи App.Tooltip (idr_mainframe);// отображается, если указатель мыши находится над символом. Флаг NIF_TIP должен быть установлен немного больше, но в альбомном формате.CString = strToolTip _T («Планировщик»);_tcsncpy_s (m_nid.szTip, strToolTip, strToolTip.GetLength ());// Если программа не была закрыта должным образом, значок все еще может присутствовать,// но добавлен теперь недопустимый hWnd. Удалите его перед повторным добавлением.Shell_NotifyIcon (NIM_DELETE, & m_nid);// Добавляем символ.bResult = Shell_NotifyIcon (NIM_ADD, & m_nid);DWORD подразумевает dw GetLastError ();// Указываем действия с символом.bResult = Shell_NotifyIcon (NIM_SETVERSION, & m_nid);
- Отредактировано Эндрю Полден 27 марта следующего года, вторник, 12:14. Удалите ненужный код
- Движется Майк Дос Чжан Среда, 28 марта, 15:21 Вопрос об API оболочки (от: Распространенные проблемы разработки для настольных компьютеров Windows)
Повысьте производительность вашего компьютера с помощью этой простой загрузки. г.