• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NET メッセージボックスが隠れてしまいます。)

VB.NETでメッセージボックスが隠れてしまう問題の解決方法

このQ&Aのポイント
  • VB.NETでIEを起動して、フォームの操作と連携してIEのページを自動で操作するプログラムを作成しています。
  • IEでWEBページのリンクをクリックしてページを移動するごとにURLをチェックして、設定に該当した場合はメッセージボックスを表示して、確認を行いたいですが、メッセージボックスがアクティブにならずにタスクバーを押さないと表示されません。
  • IEのウィンドウのタスクバーが押された状態のままでメッセージボックスがアクティブな状態で最前面に出てくれないため、メッセージボックスを最前面に表示する方法を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

TopMostプロパティだけでは VB.NETのアプリケーションがフォアグランドアプリケーションに成らない為 メッセージボックスが裏に隠れてしまいます WM_ACTIVATEメッセージとSetForegroundWindowを使えば出来そうです モジュールを追加して Public gHandle as IntPtr を記述 Form_Loadイベントで gHandle = Me.Handle フォームの宣言句に   Declare Auto Function PostMessage Lib "User32.dll" (byBal hWnd as IntPtr, _   ByVal uMsg as integer, ByVal wParam as Integer, _   ByVal lParam as Integer) as Integer   Declare auto Function SetForegroundWindow(Byval hWnd as intPtr) as integer   const WM_ACTIVATE as integer = 6   const WA_ACTIVE as Integer = 0   dim bFlag as Boolean を追加 現在のチェックロジックで条件が成立したら bFlag = False ' フォームをアクティブにするようにWindowsに依頼する PostMessage( gHandle, WM_ACTIVATE, WA_ACTIVE, IE.HWND ) Form_Activatedイベントで if bFlag = false then   SetForegroundWindow( Me.Handle )   ' 複数回MsgBoxが表示されないように制御   bFlag = True   MsgBox("メッセージ") end if といった具合で