タイトル | : IE11にて画面更新後にDOM操作できない |
記事No | : 11634 |
投稿日 | : 2016/03/05(Sat) 10:59 |
投稿者 | : IEこまった |
いろいろなサイトをめぐった結果ここに何度もたどり着きました。 VB初心者です。
目的としましては、 現在、社内のIEでチームウェアを開き、ブラウザでメールを作成する際に間違って、ブラウザバックや閉じた場合に、それまでに打っていた文章が消えてしまう事象から作成しようと思いました。
既に開いているIEの、最後にアクチィブにしたタブor最前面のタブ(タブ,ウィンドウ複数と仮定)のDOM操作を行いたく、オブジェクト化までを希望します。(できればexcelマクロは使いたくないです・・・)
下記プログラムでは、1つのIEのタブでyahooとgoogleを開いた場合、テストでタブを切り替えてるうちに何故かgoogleだけになります。 いろいろ調べた結果、IE11には画面更新後にSendMessageにてアクチィブ通知をする必要があるらしいです。
ウィンドウ名で探す EnumChildWindows や FindWindowEx では希望通りになりませんでした。
環境は VB.net VS2015 Excel2007 IE11 windows7 32bit です。
皆様の力をどうかお貸ししていただけないでしょうか。
Dim IE As Object Dim ウインドウハンドル As Long Dim 現在のURL As string
ウインドウハンドル = CreateObject("Excel.Application").ExecuteExcel4Macro("CALL(""user32"",""FindWindowA"",""JCJ"",""IEFrame"",0)")
For Each IE In CreateObject("Shell.Application").Windows() If ウインドウハンドル = IE.HWND Then Try IE.StatusText = CStr(ウインドウハンドル) ' MsgBox IE.StatusText
If IE.StatusText = CStr(ウインドウハンドル) Then Exit For Catch ex As Exception End Try End If Next
If IE Is Nothing Then MsgBox("IE6には対応していません。" & vbNewLine & "または、Not Found") Else 現在のURL = CStr(IE.LocationURL) ' MsgBox IE.LocationURL End If
Stop
|