delphi - Delphi 应用程序托盘图标上的气球提示不断弹出

标签 delphi delphi-2006 trayicon hints popup-balloons

我有一个 Delphi 2006 应用程序,可以最小化为托盘图标,并通过托盘图标上的气球提示显示各种警报消息。

在某些情况下 - 我不知道什么时候 - 先前显示的气球提示不断弹出并且不会消失。它会显示编程的时间长度,关闭,然后立即重新出现。

它始终是来自此应用程序的气球提示。

如果应用程序显示另一个气球提示(该提示在编程的时间内显示),则虚拟提示将恢复。

就好像提示被困在队列中的某个地方并且没有被删除。在没有人有灵感的情况下(我意识到这是一个渺茫的机会......),有人知道如何清除气球提示吗?

最佳答案

您使用的是哪个 TrayIcon? “Vcl.ExtCtrls”中的TCustomTrayIcon使用TNotifyIconData将Popup发送到TrayIcon。某些属性需要 Windows Vista 或更高版本。

public
  FData: TNotifyIconData; //Winapi.ShellAPI

procedure TCustomTrayIcon.ShowBalloonHint;
begin
  FData.uFlags := FData.uFlags or NIF_INFO;
  FData.dwInfoFlags := Cardinal(FBalloonFlags);
  Shell_NotifyIcon(NIM_MODIFY, FData); //Refresh(NIM_MODIFY);
end;

您可以通过处理托盘图标发送的消息来查看发生了什么。

NIN_BALLOONSHOW      = WM_USER + 2;
NIN_BALLOONHIDE      = WM_USER + 3;
NIN_BALLOONTIMEOUT   = WM_USER + 4;
NIN_BALLOONUSERCLICK = WM_USER + 5;  

关于delphi - Delphi 应用程序托盘图标上的气球提示不断弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4192178/

相关文章:

delphi - TOpenDialog 的尺寸数据存储在哪里以及如何重置?

delphi - 在 D2006 应用程序中获取外部异常 C0000006 - 如何强制 delphi 加载整个可执行文件?

java - 将 JPopupMenu 添加到 TrayIcon

javascript - Electron TrayIcon 在 Linux 上无法正常工作

delphi - 如何测试连接到 FTP 服务器的类?

德尔福 XE 报告员

delphi - 如何在 Delphi 代码中将 Speex Decompressor 连接到混音器(Mitov AudioLab 组件)

delphi - 使用 Delphi 通过 UIAutomation 获取底层菜单项的列表

Delphi 2006 重构键盘映射

java - Windows 10 通知中的空白图标