掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DocumentオブジェクトからIEのハンドルを取得するには? (ID:87481)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
おふたかた、返信ありがとうございます。 >おっさんさん 昨日湯船の中でおっさんさんが言われるようなShellWindowsの件を思いつき、今まで試していました。 行けそうな気配はあるんですが、目的のIEを特定する比較がどうもうまく行きません。 >IMAさん Documentオブジェクトはクラスモジュールを用いて(対象が不特定で、数が動的に変化する為)、 存在する全てのものをWithEvent設定しています。 修正規模や影響の関係上、Documentオブジェクトの情報から、そのIEのハンドルを 取得する関数が作れたら、と思っています。 現在、 クリックイベントが発生したDocumentオブジェクトは分かるので、 フレームが使用されている場合を考慮し、 「イベント発生したDocumentを含むIEの最上位のDocument」 と 「存在するIEのDocument」 を比較して行こうという考えです。 '〜〜〜 IEハンドル取得処理(S) 〜〜〜 Dim objShellWindows As ShellWindows 'ShellWindowsオブジェクト Dim lIeHwnd As Long 'IEウィンドウハンドル Dim iCnt1 As Integer 'ループカウンタ 'ShellWindowsオブジェクトセット Set objShellWindows = CreateObject("Shell.Application").Windows() '変数初期化 lIeHwnd = 0 '存在するShellWindow分繰返し(IEとファイルエクスプローラの判別の是非は今は置いておく) For iCnt1 = 0 To objShellWindows.Count -1 '※1(S) '指定Documentを含むIE直下のDocumentと存在する各IE直下のDocumentを比較 ' (注:tgtDocはイベントが発生したDocumentオブジェクトとする) If objShellWindows(iCnt1).Document Is tgtDoc.parentWindow.Top.Document Then '※1(E) '一致した場合hwnd取得 lIeHwnd = objShellWindows(iCnt1).hwnd Exit For Else End If Next iCnt1 '〜〜〜 IEハンドル取得処理(E) 〜〜〜 上記の※1部分の比較判定個所なのですが、ここがうまくいきません。 (例1)上記例のようなオブジェクト比較。 →一致せず(ウォッチ式では同じ内容のDocumentが一つみつかるのですが) (例2)オブジェクト変数のアドレス取得関数(隠し関数なのですが試しで)によるアドレス比較。 If ObjPtr(objShellWindows.Item(i).Document) = ObjPtr(docDoc.parentWindow.Top.Document) Then →一致せず URL比較も考えましたが、出来れば複数存在するIE内に同じURLが存在する場合も対応したいのです。 何か良い手段はないでしょうか。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.