首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式关闭TrayIcon气球

问以编程方式关闭TrayIcon气球
EN

Stack Overflow用户
提问于 2015-07-02 12:35:22
回答 1查看 1.7K关注 0票数 4

是否有可能以编程方式关闭TTrayIcon气球提示?

问题:

我有一个计时器,它每分钟检查一次留言。当它发现一条信息(如。( ABC服务停止了),它用消息显示气球:

代码语言:javascript
复制
procedure TFrmTest.tmrTimer(Sender: TObject);
begin
  tmr.Enabled := False;
  try
    if IsAnyServiceStopped then
      ShowBallon(bfError, 'The ABC Service is stopped. Do something!!!');
  finally
    tmr.Enabled := True;
  end;
end;

procedure TfrmTest.ShowBallon(pFlag: TBalloonFlags; pMessage: string);
begin
  try
    // HERE I'D LIKE TO CLOSE THE BALLOON IF IT'S OPENNED
    TrayIcon.BalloonFlags := pFlag;
    TrayIcon.BalloonHint := pMessage;
    TrayIcon.ShowBalloonHint;
  except
  end;
end;

TrayIcon BalloonTimeOut设置为3000 (3秒)。由于计时器每分钟触发一次消息(当有任何消息时),如果用户不关闭该消息,系统将生成一个消息队列。如果用户在30分钟后返回PC (例如),他们将关闭第一条消息,然后托盘图标立即显示第二条消息,对于接下来的28条消息(糟糕的用户)也一样。

我知道气球自动关闭本身,但它关闭只有当用户做一些输入(鼠标移动,按键,应用程序不需要有针对性,甚至可见)。因此,如果用户远离计算机,气球将永远停留在那里,直到输入。

我尝试过的其他解决方案是在显示任何气球时禁用计时器,并且只有当用户关闭当前气球(或者自动关闭)时才再次启用它。但我无法找到任何方法来发现气球何时关闭(如果用户单击X或自动关闭,OnBalloonClick事件不会触发)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-03 09:26:27

NOTIFYICONDATA结构的引用描述了如何在szInfo成员描述中隐藏气球提示:

要从UI中删除气球通知,可以删除图标(使用NIM_DELETE)或在uFlags中设置NIF_INFO标志,并将szInfo设置为空字符串。

对于TTrayIcon组件(至少在Delphi中),很容易满足后一个选项,因为当TTrayIcon显示气球通知时,设置了NIF_INFO标志,所以剩下的是将szInfo成员设置为空字符串。在TTrayIcon组件中,szInfo成员可以通过BalloonHint属性进行修改,因此要隐藏显示的气球提示,只需编写:

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

https://stackoverflow.com/questions/31184834

复制
相关文章

相似问题

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