特殊フォルダパスの取得(U)         <TOP>


特殊フォルダパスを取得します。

SHGetSpecialFolderPath 特殊フォルダのパスを取得

 

ListBoxの項目をクリックするとTextBoxにフォルダパスが表示されます。

 

参照

<特殊フォルダパスの取得(T)>

 

'================================================================
'= 特殊フォルダのパス名等の取得
'=    (SHGetSpecialFolderPath.bas)
'================================================================
#include "Windows.bi"

' 特殊フォルダのパスを取得
Declare Function Api_SHGetSpecialFolderPath& Lib "shell32" Alias "SHGetSpecialFolderPathA" (ByVal hwndOwner&, ByVal lpszPath$, ByVal nFolder&, ByVal fCreate&)

#define CSIDL_ADMINTOOLS &H30           '管理ツール
#define CSIDL_ALTSTARTUP &H1D           '非ローカライズスタートアップ
#define CSIDL_APPDATA &H1A              'アプリケーションデータ
#define CSIDL_BITBUCKET &HA             'ゴミ箱(仮想フォルダ)
#define CSIDL_CONNECTIONS &H31          'ネットワーク接続
#define CSIDL_CONTROLS &H3              'コントロールパネル(仮想フォルダ)
#define CSIDL_COOKIES &H21              'クッキー(IE)
#define CSIDL_DESKTOP &H0               'デスクトップ
#define CSIDL_DESKTOPDIRECTORY &H10     'デスクトップ上のファイルオブジェクトを格納するフォルダ(ファイルシステムディレクトリ)
#define CSIDL_DRIVES &H11               'マイコンピュータ(仮想フォルダ)
#define CSIDL_FAVORITES &H6             'お気に入り(ファイルシステムディレクトリ)
#define CSIDL_FONTS &H14                'Fonts(フォントを含む仮想フォルダ)
#define CSIDL_HISTORY &H22              '履歴(IE)
#define CSIDL_INTERNET &H1              'InternetExplorer(仮想フォルダ)
#define CSIDL_INTERNET_CACHE &H20       'インターネットキャッシュ
#define CSIDL_LOCAL_APPDATA &H1C        'ローカルアプリケーションデータ
#define CSIDL_MYMUSIC &HD               'マイミュージック(ファイルシステムディレクトリ)
#define CSIDL_MYPICTURES &H27           'マイピクチャ
#define CSIDL_MYVIDEO &HE               'マイビデオ
#define CSIDL_NETHOOD &H13              'NetHood(ファイルシステムディレクトリ)
#define CSIDL_NETWORK &H12              'ネットワークコンピュータ(仮想フォルダ)
#define CSIDL_PERSONAL &H5              'マイドキュメント(ファイルシステムディレクトリ)
#define CSIDL_PRINTERS &H4              'プリンタ(仮想フォルダ)
#define CSIDL_PRINTHOOD &H1B            'プリンタ
#define CSIDL_PROFILE &H28              'プロファイル
#define CSIDL_PROGRAM_FILES &H26        'ProgramFilesフォルダ
#define CSIDL_PROGRAMS &H2              'プログラム(ファイルシステムディレクトリ)
#define CSIDL_RECENT &H8                '最近使ったファイル(ファイルシステムディレクトリ)
#define CSIDL_SENDTO &H9                'SEndTo(ファイルシステムディレクトリ)
#define CSIDL_STARTMENU &HB             'スタートメニュー(ファイルシステムディレクトリ)
#define CSIDL_STARTUP &H7               'スタートアップ(ファイルシステムディレクトリ)
#define CSIDL_SYSTEM &H25               'WindowsSystemディレクトリ
#define CSIDL_TEMPLATES &H15            'ドキュメントテンプレートが格納されるフォルダ(ファイルシステムディレクトリ)
#define CSIDL_WINDOWS &H24              'Windowsディレクトリ

#define MAX_PATH 260

Var Shared List1 As Object
Var Shared Text1 As Object
List1.Attach GetDlgItem("List1") : List1.SetFontSize 14
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub List1_Click edecl ()
Sub List1_Click()
    Var FolderNo As Integer
    Var Buff As String
    Var lFolder As Long
    Var Ret As Long

    Text1.SetWindowText ""
    FolderNo = List1.GetCursel
    Select Case FolderNo
        Case 0
            lFolder = CSIDL_ADMINTOOLS
        Case 1
            lFolder = CSIDL_ALTSTARTUP
        Case 2
            lFolder = CSIDL_APPDATA
        Case 3
            lFolder = CSIDL_BITBUCKET
        Case 4
            lFolder = CSIDL_CONNECTIONS
        Case 5
            lFolder = CSIDL_CONTROLS
        Case 6
            lFolder = CSIDL_COOKIES
        Case 7
            lFolder = CSIDL_DESKTOP
        Case 8
            lFolder = CSIDL_DESKTOPDIRECTORY
        Case 9
            lFolder = CSIDL_DRIVES
        Case 10
            lFolder = CSIDL_FAVORITES
        Case 11
            lFolder = CSIDL_FONTS
        Case 12
            lFolder = CSIDL_HISTORY
        Case 13
            lFolder = CSIDL_INTERNET
        Case 14
            lFolder = CSIDL_INTERNET_CACHE
        Case 15
            lFolder = CSIDL_LOCAL_APPDATA
        Case 16
            lFolder = CSIDL_MYMUSIC
        Case 17
            lFolder = CSIDL_MYPICTURES
        Case 18
            lFolder = CSIDL_MYVIDEO
        Case 19
            lFolder = CSIDL_NETHOOD
        Case 20
            lFolder = CSIDL_NETWORK
        Case 21
            lFolder = CSIDL_PERSONAL
        Case 22
            lFolder = CSIDL_PRINTERS
        Case 23
            lFolder = CSIDL_PRINTHOOD
        Case 24
            lFolder = CSIDL_PROFILE
        Case 25
            lFolder = CSIDL_PROGRAM_FILES
        Case 26
            lFolder = CSIDL_PROGRAMS
        Case 27
            lFolder = CSIDL_RECENT
        Case 28
            lFolder = CSIDL_SENDTO
        Case 29
            lFolder = CSIDL_STARTMENU
        Case 30
            lFolder = CSIDL_STARTUP
        Case 31
            lFolder = CSIDL_SYSTEM
        Case 32
            lFolder = CSIDL_TEMPLATES
        Case 33
            lFolder = CSIDL_WINDOWS
    End Select
    
    Buff = String$(MAX_PATH, Chr$(0))
    Ret = Api_SHGetSpecialFolderPath(0, Buff, lFolder, 0)

    Text1.SetWindowText Left$(Buff, InStr(Buff, Chr$(0)) - 1)
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    List1.AddString "CSIDL_ADMINTOOLS"
    List1.AddString "CSIDL_ALTSTARTUP"
    List1.AddString "CSIDL_APPDATA"
    List1.AddString "CSIDL_BITBUCKET"
    List1.AddString "CSIDL_CONNECTIONS"
    List1.AddString "CSIDL_CONTROLS"
    List1.AddString "CSIDL_COOKIES"
    List1.AddString "CSIDL_DESKTOP"
    List1.AddString "CSIDL_DESKTOPDIRECTORY"
    List1.AddString "CSIDL_DRIVES"
    List1.AddString "CSIDL_FAVORITES"
    List1.AddString "CSIDL_FONTS"
    List1.AddString "CSIDL_HISTORY"
    List1.AddString "CSIDL_INTERNET"
    List1.AddString "CSIDL_INTERNET_CACHE"
    List1.AddString "CSIDL_LOCAL_APPDATA"
    List1.AddString "CSIDL_MYMUSIC"
    List1.AddString "CSIDL_MYPICTURES"
    List1.AddString "CSIDL_MYVIDEO"
    List1.AddString "CSIDL_NETHOOD"
    List1.AddString "CSIDL_NETWORK"
    List1.AddString "CSIDL_PERSONAL"
    List1.AddString "CSIDL_PRINTERS"
    List1.AddString "CSIDL_PRINTHOOD"
    List1.AddString "CSIDL_PROFILE"
    List1.AddString "CSIDL_PROGRAM_FILES"
    List1.AddString "CSIDL_PROGRAMS"
    List1.AddString "CSIDL_RECENT"
    List1.AddString "CSIDL_SENDTO"
    List1.AddString "CSIDL_STARTMENU"
    List1.AddString "CSIDL_STARTUP"
    List1.AddString "CSIDL_SYSTEM"
    List1.AddString "CSIDL_TEMPLATES"
    List1.AddString "CSIDL_WINDOWS"
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End