IEオブジェクトが検出できないケースについて

解決


なかじ  2008-03-07 22:12:31  No: 144501  IP: 192.*.*.*

EXCEL2003にて、開発しています。

下記のようにシェルオブジェクトを作成して、
画面数文ループして、IEオブジェクトを検索していますが、
タスクバー上には存在しているが、下記のループでは、
検出できないPCがあるのですが、考えられるケースは
どのようなものがあるでしょうか?

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
    'シェルのオブジェクトを作成する
    Set objShell = CreateObject("Shell.Application")

    '現在起動中のオブジェクト分繰り返す
    For Each objWindow In objShell.Windows
        Do While objWindow.Busy = True
            DoEvents  '特に何もしないで.Busyの状態が変わるまで待つ
        Loop
        'TypeNameでオブジェクト変数のタイプを表示する
        If TypeName(objWindow.document) = "HTMLDocument" Then
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

編集 削除
KG  2008-03-07 23:53:10  No: 144502  IP: 192.*.*.*

>If TypeName(objWindow.document) = "HTMLDocument" Then
ここで検出しているなら、これを満たしていない・・・と考える
のが普通かと思います。

まずは、検出できないPCでTypeName(objWindow.document)を調査するところ
から始めてみてはいかがでしょうか。(テキストに出力する等)

#回答でなくてすみません。

編集 削除
なかじ  2008-03-10 19:26:37  No: 144503  IP: 192.*.*.*

返信、ありがとうございます。

上記の件は、既に調査をしており、
エクスプローラが2つ、IEが2つの状態では、
IShellFolderViewDual2  が2回呼ばれます。
IEが、どうも、検出できていないようです。
また、発生している環境は、
WindowsXP SP1 +.NET Framewore V.1.1
です。同じ環境の別PCでは検出できているようです。

編集 削除
Busy  2008-03-11 03:00:12  No: 144504  IP: 192.*.*.*

コードから言うと、.Busyが解けないってことじゃないの?

編集 削除
なかじ  2008-03-13 08:29:35  No: 144505  IP: 192.*.*.*

デバッグした内容は、
If TypeName(objWindow.document) = "HTMLDocument" Then
で、TypeName(objWindow.document)が、IShellFolderViewDual2  のため、
falseになると言うことです。
正常なパターンは、エクスプローラが2つ、IEが2つの場合は、
・IShellFolderViewDual2  →  多分、エクスプローラ
・IShellFolderViewDual2  →  多分、エクスプローラ
・HTMLDocument  →  多分、IE
・HTMLDocument  →  多分、IE
となります。

編集 削除
Busy  2008-03-13 16:57:21  No: 144506  IP: 192.*.*.*

なら、2+2=4ですべて検出されているんでしょ?

編集 削除
なかじ  2008-03-25 18:40:47  No: 144507  IP: 192.*.*.*

いえいえ、以下のようになります。
(1)正常なパターン  エクスプローラが2つ、IEが2つの場合
・IShellFolderViewDual2  →  多分、エクスプローラ
・IShellFolderViewDual2  →  多分、エクスプローラ
・HTMLDocument  →  多分、IE
・HTMLDocument  →  多分、IE
(2)今回のパターン  エクスプローラが2つ、IEが2つの場合
・IShellFolderViewDual2  →  多分、エクスプローラ
・IShellFolderViewDual2  →  多分、エクスプローラ
のみ

編集 削除
なかじ  2008-03-25 18:42:28  No: 144508  IP: 192.*.*.*

以下のVer.Upで解消されました。

(発生環境)WindowsXP SP1 +.NET Framewore V.1.1

(解消環境)WindowsXP SP2

編集 削除