Delphi - 私のアプリにモーダルダイアログが開いているかどうかを検出する
-
26-09-2020 - |
質問
エラー状態が検出されたときにモーダルアラートダイアログをポップアップするDelphi 2006アプリがあります。エラー状態のチェックがアイドルハンドラで行われると、ダイアログが表示されることがある場合、ダイアログは別のモーダルダイアログの上にポップアップできます。これは、アラートダイアログが閉じられた後にアプリケーションのメインフォームが焦点が合わないユーザーの混乱状況につながる可能性があります。これらは別の曖昧なモーダルダイアログです。
アプリにモーダルダイアログが開いている間にアラートポップアップが延期されます。
私はgetLastActivePopup(MyMainWindow.Handle)を試みましたが、常時ゼロ以外に戻るようです。
解決
tapplication.modallevel または tapplication.onmodalbegin と
他のヒント
テスト
if not IsWindowEnabled(MyMainWindow.Handle) then
.
これは、非Delphiダイアログがwindows.MessageBox(Handle...
のようにモーダルに機能しているときにも、かなりの気をつけます。または共通ダイアログが表示されています(すなわち、TopEndialog)。
anypopup ()関数
の場合、戻り値はhwndパラメータと同じです。- HWNDで識別されたウィンドウは最近アクティブでした。
- HWNDによって識別されたウィンドウは、ポップアップウィンドウを所有していません。
- hwndで識別するウィンドウは最上位のウィンドウではないか、別のウィンドウが所有しています。
所属していません StackOverflow