tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル IE11にて画面更新後にDOM操作できない
投稿日: 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。