特殊フォルダパスの取得(T) <TOP>
特殊なフォルダパスを取得します。
SHGetFolderPath CSIDLからパスを取得
WindowsXP
Windows98
Windows2000
Windows 7
参照
'================================================================ '= 特殊フォルダのパス名等の取得
'= (SHGetFolderPath.bas) '================================================================ #include "Windows.bi" ' CSIDLからパスを取得する関数の宣言 Declare Function Api_SHGetFolderPath& Lib "ShFolder" Alias "SHGetFolderPathA" (ByVal hwndOwner&, ByVal nFolder&, ByVal hToken&, ByVal dwFlags&, ByVal pszPath$) ' 取り出すパスの種類を指定する定数 #define SHGFP_TYPE_CURRENT 0 '取り出すパスの種類を指定する定数 #define SHGFP_TYPE_DEFAULT 1 '取り出すパスの種類を指定する定数 ' CSIDLを示す定数の宣言 #define CSIDL_INTERNET &H1 'InternetExplorer(仮想フォルダ) #define CSIDL_PROGRAMS &H2 'プログラム(ファイルシステムディレクトリ) #define CSIDL_CONTROLS &H3 'コントロールパネル(仮想フォルダ) #define CSIDL_PRINTERS &H4 'プリンタ(仮想フォルダ) #define CSIDL_PERSONAL &H5 'マイドキュメント(ファイルシステムディレクトリ) #define CSIDL_FAVORITES &H6 'お気に入り(ファイルシステムディレクトリ) #define CSIDL_STARTUP &H7 'スタートアップ(ファイルシステムディレクトリ) #define CSIDL_RECENT &H8 '最近使ったファイル(ファイルシステムディレクトリ) #define CSIDL_SENDTO &H9 'SEndTo(ファイルシステムディレクトリ) #define CSIDL_BITBUCKET &HA 'ゴミ箱(仮想フォルダ) #define CSIDL_STARTMENU &HB 'スタートメニュー(ファイルシステムディレクトリ) #define CSIDL_MYMUSIC &HD 'マイミュージック(ファイルシステムディレクトリ) #define CSIDL_DESKTOPDIRECTORY &H10 'デスクトップ上のファイルオブジェクトを格納するフォルダ(ファイルシステムディレクトリ) #define CSIDL_DRIVES &H11 'マイコンピュータ(仮想フォルダ) #define CSIDL_NETWORK &H12 'ネットワークコンピュータ(仮想フォルダ) #define CSIDL_NETHOOD &H13 'NetHood(ファイルシステムディレクトリ) #define CSIDL_FONTS &H14 'Fonts(フォントを含む仮想フォルダ) #define CSIDL_TEMPLATES &H15 'ドキュメントテンプレートが格納されるフォルダ(ファイルシステムディレクトリ) #define CSIDL_WINDOWS &H24 'Windowsディレクトリ #define CSIDL_SYSTEM &H25 'Windows Systemディレクトリ #define CSIDL_PROGRAM_FILES &H26 'Program Filesフォルダ Var Shared Edit1 As Object Var Shared Text1 As Object Var Shared Button1 As Object Var Shared Radio(14) As Object '================================================================ '= '================================================================ Declare Sub Mainform_Start edecl () Sub Mainform_Start() Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 For i = 0 To 14 Radio(i).Attach GetDlgItem("Radio" & Trim$(Str$(i + 1))) Radio(i).SetFontSize 14 Next i ShowWindow -1 End Sub '================================================================ '= '================================================================ Declare Function Index bdecl () As Integer Function Index() Index = val(Mid$(GetDlgRadioSelect("Radio1"), 6)) -1 End Function '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var fPath As String * 260 Var Str As String Var CSIDL As Long Var Ret As Long Select Case Index Case 0 'CSIDL_PROGRAMS CSIDL = &H2 Case 1 'CSIDL_PERSONAL CSIDL = &H5 Case 2 'CSIDL_FAVORITES CSIDL = &H6 Case 3 'CSIDL_STARTUP CSIDL = &H7 Case 4 'CSIDL_RECENT CSIDL = &H8 Case 5 'CSIDL_SENDTO CSIDL = &H9 Case 6 'CSIDL_STARTMENU CSIDL = &HB Case 7 'CSIDL_MYMUSIC CSIDL = &HD Case 8 'CSIDL_DESKTOPDIRECTORY CSIDL = &H10 Case 9 'CSIDL_NETHOOD CSIDL = &H13 Case 10 'CSIDL_FONTS CSIDL = &H14 Case 11 'CSIDL_TEMPLATES CSIDL = &H15 Case 12 'CSIDL_WINDOWS CSIDL = &H24 Case 13 'CSIDL_SYSTEM CSIDL = &H25 Case 14 'CSIDL_PROGRAM_FILES CSIDL = &H26 End Select ' フォルダのパスを取得 Ret = Api_SHGetFolderPath(0, CSIDL, SHGFP_TYPE_CURRENT, 0, fPath) ' フォルダのパスを表示 Edit1.SetWindowText Left$(fPath, InStr(fPath, Chr$(0)) - 1) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End