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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
VBAにてメッセージボックスを最前面に表示させる
その他(プログラミング・Web制作)
-
変数の参照でエラーが出てしまいます。(VB.NET)
Visual Basic(VBA)
-
-
4
【VB】タブ切り替え時のイベント
Visual Basic(VBA)
-
5
CloseとDisposeの違い
Visual Basic(VBA)
-
6
VB.NETでMessageBoxが表示されない?
Visual Basic(VBA)
-
7
VBでファイルが開かれているかどうかを確認したい
Visual Basic(VBA)
-
8
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
9
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
10
VB2010でExcelの行をコピーして挿入する
Visual Basic(VBA)
-
11
VB.NETでのDOSコマンドを実行について
Visual Basic(VBA)
-
12
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスVBA フォームのス...
-
Googleフォーム・複数人の申し...
-
メッセージボックスの背景色
-
ACCESS フォーム、クエリの最前...
-
VBAでフォームのスクロールバー...
-
サブフォームの新規レコードに...
-
メインフォームからサブフォー...
-
ACCESS VBAサブフォーム(DATA S...
-
VBプログラムの終了
-
Accessでフォームから別フォー...
-
dbOpenTableとdbOpenDynaset
-
ExcelVBAでフォーム内でブック...
-
accessで2つ以上のフォームを起...
-
サブフォームのイベント取得
-
C#で作成したDLLをDelphiで呼ぶ...
-
サブフォームの行ごとにコンボ...
-
ディスプレイ解像度より大きな...
-
PDFフォームに本日の日付を自動...
-
タブコントロールを含んだフォ...
-
Googleフォームについて(至急)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
リストボックスの選択解除
-
Googleフォーム・複数人の申し...
-
サブフォームの新規レコードに...
-
Accessでフォームから別フォー...
-
メッセージボックスの背景色
-
PDFフォームに本日の日付を自動...
-
accessで2つ以上のフォームを起...
-
VB.net(VB)で、フォームにExcel...
-
筋トレ初心者です。 ジムでひた...
-
Access 無操作の場合、自動で閉...
-
サブフォームのイベント取得
-
サブフォームの行ごとにコンボ...
-
VBプログラムの終了
-
ユーザーフォーム上にアイコン...
-
アクセスVBA フォームのス...
-
ディスプレイ解像度より大きな...
-
PDFフォーム内で日付計算したい...
-
フォーム上の全てのコントロー...
-
VBAでフォームのスクロールバー...
おすすめ情報