Иконка в трее перестала появляться после слишком частого вызова Shell_NotifyIcon - PullRequest
0 голосов
/ 09 июня 2019

Я отображаю всплывающее уведомление в трее, как это

NOTIFYICONDATA ni = { 0 };
ni.cbSize = sizeof(ni);
ni.hWnd = gHwnd;
ni.uID = 1;
ni.hIcon = ghIcon;
ni.uFlags = NIF_ICON | NIF_INFO;
ni.dwInfoFlags = NIIF_INFO;
ni.uTimeout = 2000;
_tcscpy_s(ni.szInfo, _countof(ni.szInfo), _T("Test notification"));
_tcscpy_s(ni.szInfoTitle, _countof(ni.szInfoTitle), _T("myapp"));

Shell_NotifyIcon(NIM_ADD, &ni);

До недавнего времени все работало нормально - на панели задач появилось мое тестовое уведомление. Затем во время тестирования я звонил Shell_NotifyIcon быстрее, чем каждые 2 секунды, и теперь абсолютно не отображаются уведомления из моего приложения. Перезагрузка не помогает. Единственное, что помогает, - это присвоить моему исполняемому файлу другое имя или войдите в систему под другим именем.

Вопрос - как восстановить мое приложение в рабочем состоянии, чтобы уведомления снова были видны?

1 Ответ

0 голосов
/ 09 июня 2019

Я никогда раньше не слышал об этом ограничении.

У меня есть два предложения:

  • Удалить значения значков в HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify
  • Найдите в реестре имя вашего exe-файла и удалите записи, которые вы не можете распознать (WER, AppCompat и т. Д.).
...