状況によっては、ダイアログがフォアグラウンドでモーダルに表示されない原因は何ですか?
プロセス (KeePass.exe) が隠しウィンドウを所有しています。グローバル ショートカット (CTRL+A) は、ダイアログをフォアグラウンドで表示します。これは、DoModal メソッドを使用して行われます。そして、それは機能します。
しかし、私が知らないいくつかの状況では、次のことが起こります: ウィンドウがタスクバーに表示され、それをクリックした後にのみ表示されます。WndProc を上書きし、特定の WM_COPYDATA メッセージを待機する KeePass 用のプラグインを作成しました。このメッセージが届いた場合、ダイアログは DoModal を使用して表示されます。ただし、この場合はタスクバーにのみ表示され、フォアグラウンドには表示されません。
WM_COPYDATA メッセージは別のプロセスから送信されますが、これは問題ではありませんか? その理由は何ですか?
私はこれに長い間苦労しています。問題を説明するのが難しいほど奇妙です。
ダイアログを表示する前に SetForegroundWindow(hKeePassWindow) を発行しようとしましたが、変更はありませんでした。