各種特殊ファルダの位置を取得する
各種特殊ファルダの位置を取得するサンプルです。
サンプルの実行画面

ソースコード
[SpecialFolder.frm]
'SHGetSpecialFolderLocation=>特殊フォルダの位置を取得する '<引数> 'hWndOwner:ウインドウのハンドル 'nFolder:定数(CSIDL_××参照) 'ppidl:IDが入る変数 '<戻り値> '正常終了0 Private Declare Function SHGetSpecialFolderLocation Lib "SHELL32" (ByVal hWndOwner As Long, ByVal nFolder As Long, ppidl As Long) As Long 'SHGetPathFromIDList=>特殊フォルダのIDをパスに変換する '<引数> 'pIDL :特殊フォルダのID 'pszPath:パス名を格納するバッファ '<戻り値> '正常終了0 Private Declare Function SHGetPathFromIDList Lib "SHELL32" (ByVal pIDL As Long, ByVal pszPath As String) As Long Const CSIDL_DESKTOP = &H0 '[デスクトップ] Const CSIDL_PROGRAMS = &H2 '[プログラム] Const CSIDL_CONTROLS = &H3 '[コントロールパネル] Const CSIDL_PRINTERS = &H4 '[プリンター] Const CSIDL_PERSONAL = &H5 '[My Documents] Const CSIDL_FAVORITES = &H6 '[お気に入り] Const CSIDL_STARTUP = &H7 '[スタートアップ] Const CSIDL_RECENT = &H8 '[Recent] Const CSIDL_SENDTO = &H9 '[SendTo] Const CSIDL_BITBUCKET = &HA '[ごみ箱] Const CSIDL_STARTMENU = &HB '[スタートメニュー] Const CSIDL_DESKTOPDIRECTORY = &H10 '[デスクトップ(フォルダ)] Const CSIDL_DRIVES = &H11 '[マイコンピュータ] Const CSIDL_NETWORK = &H12 '[ネットワークコンピュータ] Const CSIDL_NETHOO = &H13 '[NetHood] Const CSIDL_FONTS = &H14 '[Fonts] Const CSIDL_TEMPLATES = &H15 '[ShellNew] Private Sub Command1_Click() List1.Clear Call List(CSIDL_DESKTOP, "[デスクトップ]", True) Call List(CSIDL_PROGRAMS, "[プログラム]", True) Call List(CSIDL_PERSONAL, "[My Documents]", True) Call List(CSIDL_FAVORITES, "[お気に入り]", True) Call List(CSIDL_STARTMENU, "[スタートメニュー]", True) Call List(CSIDL_TEMPLATES, "[ShellNew]", True) Call List(CSIDL_RECENT, "[Recent]", False) Call List(CSIDL_SENDTO, "[SentTo]", False) Call List(CSIDL_NETHOO, "[NetHood]", False) Call List(CSIDL_FONTS, "[Fonts]", False) End Sub '------------------------------------------------------------------------ '■関数系 List '■用途 特殊フォルダのパを取得する '■引数 ' Folder 取得したいフォルダ(定数CSIDL_××参照) ' FolderName フォルダ名--->自分がやりやすいようにしているだけです。 ' dwFlag ListBoxの見栄えの問題なのであまり気にしないで下さい。 '------------------------------------------------------------------------ Private Sub List(Folder As Long, FolderName As String, dwFlag As Boolean) Dim Ret As Long '戻り値 Dim ID As Long 'フォルダのID Dim Path As String '取得したパス名を格納する変数 '特殊フォルダの位置(ID)を取得する Ret = SHGetSpecialFolderLocation(ByVal Me.hWnd, ByVal Folder, ID) 'バッファを確保 Path = String(256, Chr(0)) 'IDからパス名へ変換する Ret = SHGetPathFromIDList(ID, Path) If dwFlag = True Then '<---(見栄えの問題なのでなくても良い) 'リストに追加 If Path <> vbNullString Then List1.AddItem FolderName & vbTab & Path Else '← & ↓(見栄えの問題なのでなくても良い)) 'リストに追加 If Path <> vbNullString Then List1.AddItem FolderName & vbTab & vbTab & Path End If '<---(見栄えの問題なのでなくても良い) End Sub
ソースコード一式のダウンロード
vbapi_specialfolder.zip 1.71 KB (1,760 バイト)
このサンプルの動作環境について
このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。
スポンサーリンク
関連記事
前の記事: | 拡張子に関連付けて実行する |
次の記事: | 「プログラムの終了」ダイアログを表示させない |
公開日:2015年03月05日
記事NO:00393