我正在显示这样的托盘通知弹出窗口
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/