正常に機能する通知アイコンを右クリックしてポップアップメニューを表示しようとしています。しかし、ユーザーがそのメニューの外をクリックするとメニューが消えてしまいます。Delphiの「トレイ」アイコン(NotifyIcon)コンテキストメニューは、外部をクリックすると消えません。
これはおそらく(このドキュメント:http://support.microsoft.com/kb/135788)によると思われますが、私が知っているまともなアプリケーションはこのように動作しません。私はポップアップメニューのハンドルを使用して無駄にSetForegroundWindowを呼び出すことを試みました。何年も前にやったことがあるが、どうやって覚えていないのか、これを回避することは可能だろう。
誰でも予期した動作を達成する方法を知っていますか?
あなたの 'SetForegroundWindow'呼び出しがうまくいかなかったのは、あなたが* window *ハンドルの代わりに* menu *ハンドルを与えていたからです。彼らは交換できません。代わりに、 'Handle'(a.k.a.' Self.Handle')だけを使ってください。 –
合意。すべての私のシステムトレイアプリケーションでは、SetForegroundWindow()を使用して、ポップアップメニューを表示する前にTFormをフォーカスします。また、ポップアップメニューが閉じた後も、TFormにWM_NULLメッセージを発行します。 –
SetForegroundWindowのステータスを確認せずに、自動的に失敗する可能性がありますか? – OnTheFly