« Vistaではショートカットへのドロップが使えない!が修正された。 | トップページ | ショートカットの起動で、なぜか「開いているファイル - セキュリティの警告」が出る。 »

2009年7月18日 (土)

Vistaでは、ShellWindows.Item()が「現在のシェル」から「デスクトップ シェル」に変更された。

「デスクトップ シェル」が取れるようになったのは朗報ですが、「現在のシェル」が取れなくなったのは、影響大です。

IE7から「現在のIE」が取れなくなりましたが、これはコンテキストメニュー拡張で代替しました。
Vistaからの「現在のシェル」が取れなくなったのは、どう代替するか?

ディレクトリのバックグラウンドのコンテキストメニューで代替します。

[HKEY_CLASSES_ROOT\Directory\Background\shell\メニュー名\command]
@="wscript.exe \"C:\\どこか\\現在のシェル.VBS\" %V"

%Vでディレクトリパスが取れるので、それを目印に探します。

For Each ie In CreateObject("Shell.Application").Windows()
  If InStr(LCase(ie.FullName),"explorer.exe") Then If ie_Document_Folder_Self_Path=WScript.Arguments.Item(0) Then Exit For
Next
If IsEmpty(ie) Then
  MsgBox "Not Found"
Else
  MsgBox ie.Document.Folder.Self.Path
End If

Function ie_Document_Folder_Self_Path
On Error Resume Next
ie_Document_Folder_Self_Path=ie.Document.Folder.Self.Path
End Function

同じディレクトリパスで複数のエクスプローラを開いていると、最初のが取れちゃいます。

« Vistaではショートカットへのドロップが使えない!が修正された。 | トップページ | ショートカットの起動で、なぜか「開いているファイル - セキュリティの警告」が出る。 »