Delphi - 私のアプリにモーダルダイアログが開いているかどうかを検出する

StackOverflow https://stackoverflow.com/questions/3306260

質問

エラー状態が検出されたときにモーダルアラートダイアログをポップアップするDelphi 2006アプリがあります。エラー状態のチェックがアイドルハンドラで行われると、ダイアログが表示されることがある場合、ダイアログは別のモーダルダイアログの上にポップアップできます。これは、アラートダイアログが閉じられた後にアプリケーションのメインフォームが焦点が合わないユーザーの混乱状況につながる可能性があります。これらは別の曖昧なモーダルダイアログです。

アプリにモーダルダイアログが開いている間にアラートポップアップが延期されます。

私はgetLastActivePopup(MyMainWindow.Handle)を試みましたが、常時ゼロ以外に戻るようです。

役に立ちましたか?

解決

tapplication.modallevel または tapplication.onmodalbegin tapplication.onmodalend イベント。この質問

他のヒント

テスト

if not IsWindowEnabled(MyMainWindow.Handle) then
.

これは、非Delphiダイアログがwindows.MessageBox(Handle...のようにモーダルに機能しているときにも、かなりの気をつけます。または共通ダイアログが表示されています(すなわち、TopEndialog)。

anypopup ()関数

getLastActivePopup ()。

の場合、戻り値はhwndパラメータと同じです。

  • HWNDで識別されたウィンドウは最近アクティブでした。
  • HWNDによって識別されたウィンドウは、ポップアップウィンドウを所有していません。
  • hwndで識別するウィンドウは最上位のウィンドウではないか、別のウィンドウが所有しています。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top