Folderオブジェクト、FolderItemsコレクション、FolderItemオブジェクト、Linkオブジェクト
[概要]
ShellオブジェクトのNameSpaceメソッド、BrowseForFolderメソッドで、任意のフォルダをFolderオブジェクトとして取得できます。
FolderオブジェクトのItemsメソッドは、FolderItemsコレクション(そのフォルダに含まれる全フォルダとファイル)を返します。
FolderItemオブジェクトは、FolderItemsコレクションの要素で、フォルダに含まれる個々のファイル・フォルダのオブジェクトです。Win95やNT4では、Internet Explorer4.0をシェル統合モードでインストールしていないと使えません。また、Internet Explorer5.0のみをインストールした環境では使用できません。
なお、これらのオブジェクトは、Web表示させたフォルダのhttファイルから使用することを前提としているので、一部挙動のおかしいメソッド・プロパティがあることに注意してください。
[機能を提供するファイル]
SHDOCVW.DLL
Microsoft Internet Controls
(IE5インストール後は、SHDOC401.DLL<Microsoft Shell Controls And Automation>になります。 )
[呼び出し方]
Set Win=Wscript.CreateObject("Shell.Application")
Set fol=Win.NameSpace(vDir) 'Folderオブジェクト
Set fc=fol.Items 'FolderItemsコレクション
Set f=fc.Item(0) 'FolderItemオブジェクト
Set l=f.GetLink 'Linkオブジェクト
など。
●Folderオブジェクト
[主なメソッド]
- CopyHere vItem, [vOptions]
当該Folderにファイルをコピーするメソッドです。vItemには、対象となるファイル・フォルダのパス(ワイルドカード指定可)、あるいは、FolderItemオブジェクトもしくはFolderItemsコレクションを指定します。
vOptionsには、このページの下の方にある、SHFILEOPSTRUCTの定数が指定できます。複数のオプションを指定するには、これらの値の和を指定します。
- GetDetailsOf(objItem, intColumn)
ファイル・フォルダの詳細を返します。
objItemにはFolderItemオブジェクトを指定します。
intColumnの値は、エクスプローラでフォルダを「詳細表示」したときに表示される情報と対応しています。通常フォルダの場合は以下の数字が指定できます。
intColumn 意味 -1 HTMLのタイトル<改行>URL 0 ファイル・フォルダ名 1 サイズ。FileSystemObjectのSizeプロパティとは違い、KB、MB表示されるので便利かも。
ただし、objItemがフォルダだった場合は値を返しません。2 ファイルタイプ。 3 更新日時 4 属性
objItemを省略すると、intColumnに対応するカラムのタイトルが返されます。
なお、特殊フォルダ(「お気に入り」など)で、「属性」より後のカラムの情報(「最終表示日時」など)を得るには、対応するカラムのタイトルを上記の方法であらかじめ参照しておく必要があります。以下の例を参照。
(例) :'実行すると、Favoritesフォルダを詳細表示したときの情報が、テキストファイル化されます。 Dim str Set Fs = WScript.CreateObject("Scripting.FileSystemObject") Set Win = WScript.CreateObject("Shell.Application") Set objFolder=Win.NameSpace(6) For I=0 To 8 str=str & objFolder.GetDetailsOf(, I) & vbTab 'カラムのタイトルを取得 Next str=str & vbCrLf For Each obj In objFolder.Items 'お気に入りフォルダすべてのファイルに対して実行 For I=0 To 8 'すべてのカラムに対して実行 str=str & objFolder.GetDetailsOf(obj, I) & vbTab Next str=str & vbCrLf Next Set ts=Fs.CreateTextFile("C:\test.txt") ts.Write str ts.Close msgbox "done"- NewFolder strbName, [vOptions]
新しいフォルダを作成するものと思われますが、WSHからは実行できないようです。
- MoveHere vItem, [vOptions]
当該Folderにファイルを移動するメソッドです。vItemには、対象となるファイル・フォルダのパス(ワイルドカード指定可)、あるいは、FolderItemオブジェクトもしくはFolderItemsコレクションを指定します。
vOptionsには、このページの下の方にある、SHFILEOPSTRUCTの定数が指定できます。複数のオプションを指定するには、これらの値の和を指定します。
- Items
当該フォルダに含まれる全ファイル・フォルダが格納されたFolderItemsコレクションを返します。
- ParseName(strbName)
当該フォルダ内にある、strbNameで指定した名前のファイル・フォルダのFolderItemオブジェクトを取得します。
(例) :'command.comのサイズを表示 Set Win=Wscript.CreateObject("Shell.Application") Set fol=Win.NameSpace("C:\") Set f=fol.ParseName("command.com") MsgBox fol.GetDetailsOf(f,1)[主なプロパティ]
- Title
既定プロパティ。フォルダのタイトルを返す。パスではないので注意。エクスプローラのタイトルバーに表示されるタイトルと同じ名前。
- ParentFolder
当該フォルダの親フォルダのFolderオブジェクトを返す。
●FolderItemsコレクション
[主なメソッド]
- Item([index])
FolderItemオブジェクトを返す。indexには0からFolderItemの総数(Countプロパティで取得可)-1までが指定できる。indexを省略すると、FolderItemsコレクションを設定した、もとのFolderオブジェクト自体をFolderItemオブジェクトとして返す。[主なプロパティ]
- Count
FolderItemsコレクションに含まれるFolderItemオブジェクトの総数(すなわちファイル・フォルダの総数)を返す。
●FolderItemオブジェクト
[主なメソッド]
- InvokeVerb [strVerb]
ファイルやフォルダを右クリックしたときのメニューを実行します。strVerbにはメニューのタイトルを指定できます。 A などのアクセスキーは &A のように記述します。strVerbを省略すると、対象ファイルに対する既定アクション(通常はopen/ 開く(O) )が実行されます。
(例) :'ごみ箱を空にする Set Win=Wscript.CreateObject("Shell.Application") Set fol=Win.NameSpace("C:\Recycled") 'ごみ箱フォルダを取得 Set f=fol.Items.Item 'ごみ箱フォルダをフォルダアイテムとして取得 f.InvokeVerb "ごみ箱を空にする(&B)"
- Verbs
ファイルやフォルダを右クリックしたときのメニューのすべてを格納した、FolderItemVerbsコレクションを返します。が、FolderItemVerbsコレクションやFolderItemVerbオブジェクトは、挙動がおかしいので使用しないでください。[主なプロパティ]
- GetLink
FolderItemオブジェクトがリンクの場合、Linkオブジェクトを返します。
- GetFolder
FolderItemオブジェクトがフォルダの場合、Folderオブジェクトを返します。
- IsBrowsable
FolderItemオブジェクトがHTMLファイルならTrue、その他であればFalseを返します。
- IsFileSystem
FolderItemオブジェクトが普通のファイル・フォルダならTrue、仮想フォルダ(マイコンピュータなど)ならFalseを返します。
- IsFolder
FolderItemオブジェクトがフォルダならTrue、その他であればFalseを返します。
(例) :'Windowsフォルダのサブフォルダの名前を取得 Dim s Set Win=Wscript.CreateObject("Shell.Application") Set fol=Win.NameSpace("C:\Windows") 'Windowsフォルダを取得 Set fc=fol.Items For Each I In fc If I.IsFolder Then s=s & I.Name & " " End If Next MsgBox s- IsLink
FolderItemオブジェクトがリンク(*.lnk,*.pif,*.url)ならTrue、その他であればFalseを返します。
- ModifyDate
更新日時をDate型で返す。
(例) :'Windows98付属アプリを表示 Dim s Set Win=Wscript.CreateObject("Shell.Application") Set fol=Win.NameSpace("C:\Windows") 'Windowsフォルダを取得 Set fc=fol.Items For Each I In fc If DateDiff("d",I.ModifyDate,#98/6/12#)=0 And I.Type="アプリケーション" Then 'もしファイルタイプが「アプリケーション」で、更新日が98/6/12なら s=s & I.Name & " " End If Next MsgBox s- Name
FolderItemオブジェクトの既定プロパティ。エクスプローラで表示したときと同じ名前を返す。また値の設定も可能です。
- Path
FolderItemオブジェクトのパスを返す。
- Size
FolderItemオブジェクトのサイズをバイト数で返す。
- Type
FolderItemオブジェクトのファイルタイプ名を返す。
●Linkオブジェクト
[主なメソッド]
- GetIconLocation(strPath)
strPathにアイコンリソースのあるファイルのパスを指定すると、そのアイコンのインデックスを返す。
- Resolve intFlags
Pathプロパティに指定したファイルが存在しないとき、intFlagsの値に従ってショートカットを変更します。intFlagsの値は、以下の値0、もしくは1,2,4を組み合わせて(足しあわせて)利用できます。
intFlags 意味 0 Pathのファイルが存在しない場合、ダイアログを表示する 1 Pathのファイルが存在しなくても、ダイアログを表示しない 2 Pathのファイルが存在しなければ、サブフォルダを検索 4 Pathのファイルが他の場所に存在すれば、Pathプロパティをその場所に変更する - Save [strWhere]
プロパティの変更点を保存します。
- SetIconLocation strPath , lngiIcon
アイコンを変更します。strPathにアイコンリソースのあるファイルのパスを、lngiIconにアイコンのインデックスを指定します。[主なプロパティ]
- Arguments
ショートカットの引数を返します。値の設定も可。
- Description
ショートカットの記述を返します。値の設定も可。
- Hotkey
ホットキーの設定を返します。値の設定も可。返値はLong型ですが、解析はできていません。
- Path
ショートカット先のパスを返します。値の設定も可。
- ShowCommand
実行時のウィンドウの大きさを返します。値の設定も可。
1=通常サイズ、3=最大化、7=最小化
- WorkingDirectory
作業フォルダを返す。値の設定も可。
(例) :'\スタート メニュー\プログラムのショートカット情報を取得 Set Win=Wscript.CreateObject("Shell.Application") Set fol=Win.NameSpace("C:\Windows\スタート メニュー\プログラム") Set fc=fol.Items For I=0 To fc.Count-1 'すべてのFolderItemにたいして Set f=fc.Item(I) If f.IsLink Then 'もしFolderItemがリンクなら Set l=f.GetLink 'Linkオブジェクト取得 MsgBox "[リンク先]" & vbNewLine & l.Path & vbNewLine & "[作業フォルダ]" & vbNewLine & l.WorkingDirectory,,f.Name End If Next
[定数]
●SHFILEOPSTRUCT
定数名と値 | 意味 |
Const FOF_ALLOWUNDO = &H40 | エクスプローラで「編集」→「元に戻す」コマンドで操作を取り消せるようになる。 |
Const FOF_CONFIRMMOUSE = &H2 | (未使用) |
Const FOF_FILESONLY = &H80 | ワイルドカードを指定したとき(*.*)、フォルダを対象外にする。 |
Const FOF_MULTIDESTFILES = &H1 | ? |
Const FOF_NOCONFIRMATION = &H10 | 上書き確認などのダイアログが表示されなくなる。 |
Const FOF_NOCONFIRMMKDIR = &H200 | フォルダを作成する確認ダイアログが表示されなくなる。 |
Const FOF_RENAMEONCOLLISION = &H8 | コピーや移動先に同名のファイルが存在する場合、"コピー 〜 filename.ext"のように、リネームする。 |
Const FOF_SILENT = &H4 | 経過ダイアログが表示されなくなる。 |
Const FOF_SIMPLEPROGRESS = &H100 | ファイル名の表示されない、シンプルな経過ダイアログが表示される。 |
Const FOF_WANTMAPPINGHANDLE = &H20 | ? |