特定のファイルを選択した状態でフォルダを開く
ショートカットのプロパティにある[リンク先を探す]ボタンと同じ動作をするテクニックです。
プログラムで作成したファイルをコピーするためにフォルダを開いてあげればユーザの利便性もアップすると思います。
サンプル(32bit)
Private Sub Command1_Click() '======[ フォルダオープン Screen.MousePointer = vbHourglass Call Shell("explorer.exe /select," & Text1.Text, vbNormalFocus) Screen.MousePointer = vbDefault End Sub
サンプル解説
・・・単純にエクスプローラにオプションを与えているだけです。
/select,の後に選択したいファイル名をセットしてエクスプローラを起動しています。
エクスプローラはセットしたファイルのフォルダを開き、ファイル(サブフォルダを指定した場合はサブフォルダ)を選択状態にします。エクスプローラオプションは次の通りです。(Microsoftの技術資料より)
オプションスイッチ 説明 /n 新しいウィンドウで開きます。 /e フォルダツリーを表示した状態(通常のエクスプローラのスタイル)で開きます。 /root,(オブジェクト) 指定したオブジェクトをルートパスとします。
それより上には移動できなくなります。/select,(サブオブジェクト) 指定したサブオブジェクトを選択状態にします。 (オブジェクト) 指定されたオブジェクトを開きます。 各オプションスイッチはカンマで区切ってください。
【例】
- c:\をフォルダツリー付きで新しいウィンドウで開く場合
explorer.exe /n,/e,c:\- 無題.txtを選択してフォルダツリー付きで開く場合
explorer.exe /e,/select,c:\doc\無題.txt- c:\docをルートにしてフォルダツリー付きで開く場合
explorer.exe /e,/root,c:\doc「マイ ドキュメント」など特殊なオブジェクトを指定する場合は、(オブジェクト)にGUIDを指定することで可能です。
詳しくは割愛しますが、サーチエンジンなどで検索すると分かると思います。(あと、レジストリエディタで直接レジストリ検索して知ることもできます)【例】
- マイ ドキュメントをフォルダツリー付きで開く場合
explorer.exe /e,::{450D8FBA-AD25-11D0-98A8-0800361B1103}試した結果なんですが、/root,(オブジェクト)と/select,(サブオブジェクト)は併用できないようです。Windows2000では、うまく動いてくれませんでした。
あと、/select,(オブジェクト)でスクロールの位置が変になる(スクロールされすぎて選択されたファイルが見えない)状態になるんですが・・・何故なんでしょう?
[ Window Close ]