タイトル : Re: withEventsで生成したInternetExplorerが捕捉できない 投稿日 : 2015/04/06(Mon) 09:31 投稿者 : 魔界の仮面弁士
> withEventsで生成したIEが下記の方法で捕捉できませんでした。 生成……ですか? 「WithEvents」も「CreateObject("Shell.Application")」も、 IE (InternetExplorer) の インスタンスを『生成』するためのものではありませんよ。 Windows プロパティで得られる ShellWindows コレクションは、 現在起動されている InternetExplorer オブジェクト(≠WebBrowser オブジェクト)を 列挙するコレクションを返すためのものですし、WithEvents ステートメントは、 単一のオブジェクトで発生したイベントを受け取るためのものです。 > withEvents既に開いている複数のIEのhwndとLocationURLを調べたいのですが その目的であれば、イベントの出番が無いので、WithEvents は不要かと思います。 「For Each objIE In objShellWindows」から「Next」までのループブロックの中で、 objIE.hwnd や objIE.LocationURL を調べるだけのはずです。 それとも、そのようにして絞り込んだ InternetExplorer オブジェクトを、 別途用意した WithEvents に代入しようとしたものの、そもそも列挙されなかったとか、 あるいは、WithEvents 変数へ代入したときに実行時エラーになってしまったということでしょうか。 もしそうだとしたら、調査のために得た hwnd や LocationURL が、そもそも間違っていたという 可能性もありますが、それらはどのようにして得たものなのでしょうか。 あるいは、それらの値は正しいが、列挙されてこないようだとすると、 KB940998 などといった 環境依存の問題も考えられます。その場合はたとえば、 > Set objShell = CreateObject("Shell.Application") > Set objShellWindows = objShell.Windows という部分を Set objShellWindows = GetObject("new:9BA05972-F6A8-11CF-A442-00A0C90A8F39") に書き換えてみたら結果は変わりますか? もしくは、折角 hwnd まで分かっているのなら、ShellWindows コレクションから列挙するのではなく、 "Internet Explorer_Server" のウィンドウに WM_GETOBJECT メッセージを送って ObjectFromLresult で IHTMLDocument2 インターフェイスを直接受け取るという手もあります。 http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200904/09040020.txt |