第14回 WshShellオブジェクトを利用する(3):基礎解説 演習方式で身につけるチェック式WSH超入門(3/4 ページ)
今回はプログラムを起動するメソッドのほか、ショートカットの作成/管理、特殊フォルダの取得、環境変数の操作方法などについて解説。
特殊フォルダを取得するSpecialFoldersプロパティとWshSpecialFoldersオブジェクト
これまでは、特殊フォルダを取得するにはレジストリ・エントリを読み込んでいたが、実はもっと簡単に特殊フォルダを取得する方法がある。SpecialFoldersプロパティと、このプロパティが返すWshSpecialFoldersオブジェクト(コレクション)を用いる方法だ。WshSpecialFoldersコレクションには特殊フォルダの名前とパスが含まれている。コレクションなのでFor 〜 Each 〜 Nextステートメントで値の列挙が可能である。また、CountメソッドやLengthプロパティで個数も取得できる。
Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
Dim objSpecialFolders, strSpecialFolder, strOutput
strOutput = ""
'SpecialFoldersプロパティの返すWshSpecialFoldersコレクションを変数に格納
Set objSpecialFolders = objWshShell.SpecialFolders
'WshSpecialFoldersコレクションの中身を列挙
For Each strSpecialFolder In objSpecialFolders
strOutput = strOutput & strSpecialFolder & vbCrLf
Next
MsgBox strOutput & "(計" & objSpecialFolders.Count & ")"
Set objSpecialFolders = Nothing
Set objWshShell = Nothing
このスクリプトの実行結果は次のようになる。
このように特殊フォルダの一覧を取得することができた。実際は特定の(例えば「すべてのユーザーのスタート メニュー」の)特殊フォルダのパスを知りたいときに使う。それには次のようにする。
Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
MsgBox objWshShell.SpecialFolders.Item("AllUsersStartMenu")
結果は次のようになる。
なおItemプロパティは既定(デフォルトの)プロパティなので、省略して
MsgBox objWshShell.SpecialFolders("AllUsersStartMenu")
と記述することもできる。
さて、ここでは「すべてのユーザーのスタート メニュー」フォルダのパスを知るときには「AllUsersStartMenu」をItemプロパティの引数に渡せばいいことが分かったが、ほかのフォルダは次のようになっている。
特殊フォルダ名(Itemプロパティの引数) | 特殊フォルダの説明 |
---|---|
AllUsersDesktop | すべてのユーザーのデスクトップ |
AllUsersStartMenu | すべてのユーザーのスタート・メニュー |
AllUsersPrograms | すべてのユーザーのスタート・メニュー配下のプログラム |
AllUsersStartup | すべてのユーザーのスタートアップ |
Desktop | 現在のユーザーのデスクトップ |
Favorites | 現在のユーザーのお気に入り |
Fonts | フォント |
MyDocuments | 現在のユーザーのマイ・ドキュメント |
NetHood | 現在のユーザーのネットフォルダ |
PrintHood | 現在のユーザーのプリンタ・フォルダ |
Programs | 現在のユーザーのスタート・メニュー配下のプログラム |
Recent | 現在のユーザーの最近使ったファイル |
SendTo | 現在のユーザーの送る |
StartMenu | 現在のユーザーのスタート・メニュー |
Startup | 現在のユーザーのスタートアップ |
Templates | 現在のユーザーのテンプレート |
AppData | 現在のユーザーのアプリケーションのデータ |
Itemプロパティの引数として渡す特殊フォルダ名 ※ヘルプには「AppData」の記載がない。また、コレクション内にはDesktopがなぜか2つあるが何らかの実装ミスであろう。 |
この表に従って、知りたい特殊フォルダの位置を簡単に調べることができる。
Copyright© Digital Advantage Corp. All Rights Reserved.