德尔福外面,当点击“托盘”图标(NotifyIcon的)上下文菜单不消失(Delphi “Tray”

2019-07-30 21:38发布

我试图显示弹出菜单时,右键单击我的通知图标,工作正常; 但我想,当用户点击该菜单以外的消失菜单。

这是据称被设计为每KB135788 - PRB:菜单的通知图标无法正常工作 ( 存档 )。

但是,没有像样的程序,我知道的行为就像这样。 我已经打过电话SetForegroundWindow使用弹出式菜单的句柄无济于事。 我敢肯定,这可以解决这个问题,因为我已经是几年前完成,但不记得如何。

任何人都知道如何实现预期的行为?

Answer 1:

我已经找到了解决办法!

我打电话SetForegroundWindow(PopupMenu1.Handle);

这是不行的,但在OnPopup事件处理程序改变这

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
  // Hack to fix the "by design" behaviour of popups from notification area icons. 
  // See: http://support.microsoft.com/kb/135788
  BringToFront();
end;

作品!

显然,如果在这个被称为形式是可见的,你的应用程序将最重要的跳跃,但如果它是隐藏的(如我的是),那么它会工作。

我很想知道,如果有一种方法,使菜单操作权没有窗户跳最重要的,虽然。



文章来源: Delphi “Tray” icon (NotifyIcon) context-menu does not disappear when clicking outside it