c - 过于频繁地调用 Shell_NotifyIcon 后托盘图标停止出现

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

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

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

最佳答案

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

我有两个建议:

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

关于c - 过于频繁地调用 Shell_NotifyIcon 后托盘图标停止出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56517257/

相关文章:

C# P/Invoke Win32 函数 RegQueryInfoKey

c - 在c中显示结构中的数字和字符串

c - 动态制作结构数组

c - 是什么导致了 c 中 printf 命令的这种奇怪输出,我该如何阻止它发生?

c - c : (negative)0 is not equal to 0 中的双变量类型

c++ 抽象类有问题

c++ - DXGI 显示器枚举未提供 Dell P2715Q 显示器的完整尺寸

linux - Windows 链接到带有 x 转发的 linux 可执行文件

windows - 将 TIMECODE 转换为帧编号的批处理

delphi - 如何显示一个像弹出菜单一样的窗口?