掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
IEのconfirmやalertで表示されるダイヤログをVBで押すには? (ID:81073)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
上記の内容でうまくいったと思ったのですが、objbutton.clickを実行したときダイヤログのボタンが押されるまで処理がストップされ、次のステップへ進みません。 そこで以下のように修正してやってみたところ、うまく行きました。 Clickでダイヤログが表示され処理がストップしますが、別スレッドでダイヤログを監視するように改善しました。 スレッドの代わりにタイマー処理もやってみましたが、ダイヤログが表示されている間は、タイマーの割り込みがされませんでした。 VB.NET限定かな。 Public Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Integer Public Declare Function FindWindowEx Lib "user32" _ Alias "FindWindowExA" (ByVal hWnd1 As Integer, _ ByVal hWnd2 As Integer, _ ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Integer Public Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hwnd As Integer, _ ByVal wMsg As Integer, _ ByVal wParam As Integer, _ ByVal lParam As Integer) As Integer Private Sub btnDialog_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnDialog.Click Dim objIE As Object Dim objButton As Object Dim strURL As String Dim ThreadID As System.Threading.Thread objIE = CreateObject("InternetExplorer.Application") objIE.Navigate2(strURL) objButton = objIE.Document.getElementById("submit") ThreadID = New System.Threading.Thread _ (AddressOf Me.DialogWatchTask) ThreadID.Start() objButton.click <-本来ならここでダイヤログが表示され処理がストップ ThreadID.Abort() End Sub Public Sub DialogWatchTask() <-別スレッドで監視 Const WM_SETFOCUS = &H7 Const WM_LBUTTONDOWN = &H201 Const WM_LBUTTONUP = &H202 Dim hWnd1 As Long Dim hWnd2 As Long Do hWnd1 = FindWindow("#32770", "Microsoft Internet Explorer") If hWnd1 <> 0 Then hWnd2 = FindWindowEx(hWnd1, 0, "Button", "OK") If hWnd2 <> 0 Then SendMessage(hWnd1, WM_SETFOCUS, &H0, &H0) SendMessage(hWnd2, WM_LBUTTONDOWN, &H1, &H70029) SendMessage(hWnd2, WM_LBUTTONUP, &H0, &H70029) Exit Do End If End If Loop End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.