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

タイトル 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

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

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