0

通知アイコンを右クリックすると、ポップアップ メニューを表示しようとしていますが、これは正常に機能します。しかし、ユーザーがそのメニューの外をクリックすると、メニューが消えてしまいます。

これは、 KB135788 - PRB: Menus for Notification Icons Do Not Work Correctly (アーカイブ)に従って設計されていると思われます。

しかし、私が知っている適切なアプリで、このように動作するものはありません。ポップアップ メニューのハンドルを使用して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 に答える