0

右键单击我的通知图标时,我试图显示一个弹出菜单,效果很好;但是我希望当用户在该菜单之外单击时菜单消失。

根据KB135788 - PRB:通知图标的菜单无法正常工作 存档 ,它应该是设计使然。

但我所知道的没有像样的应用程序的行为是这样的。我尝试使用弹出菜单的句柄调用SetForegroundWindow无济于事。我确信可以解决这个问题,就像我几年前所做的那样,但不记得如何了。

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

4

1 回答 1

0

我找到了解决方案!

我正在调用 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;

作品!

显然,如果在调用它时表单是可见的,那么您的应用程序将首先跳转,但如果它是隐藏的(就像我的那样),那么它就会工作。

不过,我很想知道是否有一种方法可以使菜单正常工作而不会跳到最前面。

于 2009-07-27T16:05:34.110 回答