tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルエクスプローラの操作で特殊パスへの移動
記事No14103
投稿日: 2009/09/21(Mon) 02:08
投稿者シス
以前、魔界の仮面弁士様に教えていただいたエクスプローラの操作方法で
マイコンピュータなどの特殊なパスへの移動方法がわかりません

例:マイコンピュータへ移動
Dim exp As IWebBrowser2
Set exp = GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")

exp.Navigate "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
exp.Visible = True

エラー名は「実行時エラー '5':プロシージャの呼び出し、または引数が不正です。」です
C:\などのパスは正常に行えます。

環境は Vista + IE8 + VB6 SP6 です
よろしくお願い致します

[ツリー表示へ]
タイトルRe: エクスプローラの操作で特殊パスへの移動
記事No14104
投稿日: 2009/09/21(Mon) 18:41
投稿者魔界の仮面弁士
> マイコンピュータなどの特殊なパスへの移動方法がわかりません

Vista 機が手元に無いので、
 XP Professional SP3 + IE8 + VBScript 5.8
 Windows 7 Ultimate + IE8 + VBScript 5.8
で試してみました。


Dim exp
Set exp = GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")
exp.Visible = True
'exp.Navigate "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"  '★1
exp.Navigate2 17  '★2

------------------------
★1 を使った場合:
        XP : "マイ コンピュータ" が表示された。
      Win7 : Navigate 時にエラー[プロシージャの呼び出し、または引数が不正です。]
Win7(管理者): GetObject 時にエラー[ActiveX コンポーネントはオブジェクトを生成できません]

★2 を使った場合:
        XP : "マイ コンピュータ" が表示された。
      Win7 : "コンピューター" が表示された。
Win7(管理者): GetObject 時にエラー[ActiveX コンポーネントはオブジェクトを生成できません]
------------------------

[ツリー表示へ]
タイトルRe^2: エクスプローラの操作で特殊パスへの移動
記事No14105
投稿日: 2009/09/21(Mon) 23:30
投稿者シス
お返事ありがとうございます。
★2の方法で、私の環境のVistaでは特殊パスにも移動できました
ネットワーク上のPCには移動できないみたいですね、Navigate時にエラーでました

Win7まだ持ってないのですが、管理者権限で実行するとできないのですか。
Win7でもいろいろ試してみたいですね。
いい解決方法があるといいのですが

この度は数種類の事象も試していただいてありがとうございました!

[ツリー表示へ]
タイトルRe^3: エクスプローラの操作で特殊パスへの移動
記事No14106
投稿日: 2009/09/22(Tue) 09:51
投稿者魔界の仮面弁士
追記。
さらに、各種シェルオブジェクトを渡してみました。

Dim exp
Set exp = GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")
exp.Visible = True
Dim shl
Set shl = CreateObject("Shell.Application")
Dim ns

If [案3] Then
  Set ns = shl.NameSpace("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")
  exp.Navigate2 ns
ElseIf [案4] Then
  Set ns = shl.NameSpace("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")
  exp.Navigate2 ns.Items.Item
ElseIf [案5] Then
  Set ns = shl.NameSpace(17)
  exp.Navigate2 ns
ElseIf [案6] Then
  Set ns = shl.NameSpace(17)
  exp.Navigate2 ns.Items.Item
End If

--------------
 XP : 案3,4,5,6 いずれも成功。"マイ コンピュータ" が表示される。

Win7 : 案5,6 は成功。"コンピューター" が表示される。
       案3,4 は失敗。変数 ns(NameSpace メソッドの戻り値) が Nothing となる。
--------------

[ツリー表示へ]