调用Shell_NotifyIcon太频繁后,托盘图标停止出现

时间:2019-06-09 18:20:41

标签: c windows winapi windows-10

我正在显示这样的托盘通知弹出窗口

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);

直到最近它都工作良好-托盘图标弹出了我的测试通知。然后,在测试期间,我每隔2秒打电话给Shell_NotifyIcon的速度更快,现在绝对不会显示来自我的应用程序的通知。重新启动没有帮助。唯一有帮助的是给我的可执行文件另一个名称或以其他用户身份登录。

问题是-如何将我的应用恢复到正常工作状态,以便再次显示通知?

1 个答案:

答案 0 :(得分:0)

我以前从未听说过此限制。

我有两个建议:

  • 删除HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify中的图标值
  • 在注册表中搜索您的exe文件名,并删除您无法识别的条目(WER,AppCompat等)。