首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi应用程序托盘图标上的气球提示不断出现

问Delphi应用程序托盘图标上的气球提示不断出现
EN

Stack Overflow用户
提问于 2010-11-16 16:10:48
回答 2查看 3.4K关注 0票数 12

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

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

它总是来自这个应用程序的气球提示。

如果应用程序显示另一个气球提示,该气球提示显示的时间为编程时间,则幻影提示将恢复。

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

EN

回答 2

Stack Overflow用户

发布于 2012-06-12 03:05:25

您使用的是哪种TrayIcon?"Vcl.ExtCtrls“中的TCustomTrayIcon使用TNotifyIconData将弹出窗口发送到TrayIcon。某些属性需要Windows Vista或更高版本。

代码语言:javascript
复制
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;

您可以通过处理由trayicon发送的消息来查看正在发生的事情。

代码语言:javascript
复制
NIN_BALLOONSHOW      = WM_USER + 2;
NIN_BALLOONHIDE      = WM_USER + 3;
NIN_BALLOONTIMEOUT   = WM_USER + 4;
NIN_BALLOONUSERCLICK = WM_USER + 5;  
票数 3
EN

Stack Overflow用户

发布于 2014-10-24 20:54:33

我在VB.NET中也面临着同样的问题,我的应用程序通过系统托盘中的气球提示来显示错误消息。当一次出现多个错误时,气球提示会坚持正常的超时,并一个接一个地显示错误。它看起来像是有某种类型的缓冲区,它记住了您尝试显示气球提示的实际次数。如果您停止显示新的气球提示并等待足够长的时间,它最终会停止。

我的目标是在另一个气球提示出现时尽快关闭当前的气球提示,但我还没有想好要这样做。所以这只是一个解决方案的一半。

添加了完整的解决方案

完整的解决方案非常简单。在显示新的气球提示之前执行此操作(其中Tray是您的TrayIcon/NotifyIcon)。

代码语言:javascript
复制
Tray.Visible = true;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4192178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档