
VB.NETでIEを起動して、フォームの操作と連携して
IEのページを自動で操作するプログラムを作っています。
IEでWEBページのリンクをクリックしてページを移動する
ごとにURLをチェックして、設定に該当した場合は
メッセージボックスを表示して、このページで良いですか?
という確認をしたいのですが、メッセージボックスが
アクティブにならずにタスクバーを押さないと表示されません。
リンクをクリックした後は
SetWindowPos(IE.HWND, 1, 0, 0, 0, 0, &H1 Or &H2 Or &H10)
を実行して、IEを後ろに消してフォームを出すことは出来たのですが、
IEのウィンドウのタスクバーが押された状態のままで
メッセージボックスがアクティブな状態で最前面に出てくれません。
Me.Topmost = True でもフォームは出るのですが、
メッセージボックスはその後ろに隠れてしまいます。
メッセージボックスを最前面に出す方法があったら教えて頂きたいです。
よろしくお願い致します。
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
といった具合で
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ブラウザ) IE・edgeで日増しに観られるサイトが減ってくる。 1 2022/10/04 22:40
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(パソコン・周辺機器) EXCELで「WEBオプションの対象ブラウザ」を変更する方法 2 2023/04/12 15:44
- Chrome(クローム) グーグルクロムをマイクロソフト・エッジに切り替える方法 2 2022/06/20 10:08
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/04/21 13:46
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- InternetExplorer(IE) Microsoft edgeのIEモードを解除したいのですが。 3 2023/04/09 13:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleフォーム・複数人の申し...
-
VBA リストボックスをダブルク...
-
C++ CLI のデストラクタについて
-
VB.NET 親フォームから子フォー...
-
アクセスでフォームで入力 複...
-
Accessでフォームから別フォー...
-
ExcelVBAでユーザーフォーム内...
-
PDFフォームに本日の日付を自動...
-
フォームを1つだけ閉じる方法は?
-
サブフォームのコントロールの...
-
ACCESS フォーム、クエリの最前...
-
Access2010で動的コントロール...
-
リストボックスの選択解除
-
ToolStripStatusLabelを固定し...
-
dbOpenTableとdbOpenDynaset
-
ACCESS VBAサブフォーム(DATA S...
-
VB.net(VB)で、フォームにExcel...
-
ACCESS 表形式フォームで1レ...
-
VB.NET メッセージボックスが隠...
-
フォーム上の全てのコントロー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleフォーム・複数人の申し...
-
VBA リストボックスをダブルク...
-
Accessでフォームから別フォー...
-
C# 別なフォームへ値を渡す (...
-
VBAにてメッセージボックスを最...
-
PDFフォームに本日の日付を自動...
-
アクセスVBA フォームのス...
-
サブフォームの新規レコードに...
-
メッセージボックスの背景色
-
VBプログラムの終了
-
メインフォームからサブフォー...
-
Access 無操作の場合、自動で閉...
-
子フォームから親フォームのオ...
-
リストボックスの選択解除
-
accessで2つ以上のフォームを起...
-
フォーム上の全てのコントロー...
-
ユーザーフォーム上にアイコン...
-
ExcelVBAでユーザーフォーム内...
-
ASP.NETとC#でWebフォームを呼...
-
PDFフォーム内で日付計算したい...
おすすめ情報