「フォルダを選択」ダイアログを表示する
「フォルダを選択」ダイアログを表示するサンプルです。
サンプルの実行画面
APIの宣言
[FolderDlg.bas]
'------------------------------------------- '「ファイルを参照」ダイアログを表示するAPI関数 '------------------------------------------- 'lpBrowseInfo:BROWSEINFO構造体 '戻り値:キャンセル0 選択した時はそのパスの値 Public Declare Function SHBrowseForFolder Lib "shell32.dll" (lpBrowseInfo As BROWSEINFO) As Long '--------------------------------------------------- ' SHBrowseForFolderで取得した値をパスに変換するAPI関数 '--------------------------------------------------- Public Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long Public Type BROWSEINFO hwndOwner As Long 'ウインドウのハンドル pidlRoot As Long '定数(CSIDL_××参照) pszDisplayName As String ' lpszTitle As String 'タイトル ulFlags As Long '定数(BIF_××参照) lpfn As Long 'コールバック lParam As Long 'コールバックのパラメータ iImage As Long ' End Type '定数 Public Const CSIDL_DESKTOP = &H0 '[デスクトップ] Public Const CSIDL_INTER_EXP = &H1 '[InterNet Explorer] Public Const CSIDL_PROGRAMS = &H2 '[プログラム] Public Const CSIDL_CONTROLS = &H3 '[コントロールパネル] Public Const CSIDL_PRINTERS = &H4 '[プリンター] Public Const CSIDL_PERSONAL = &H5 '[My Documents] Public Const CSIDL_FAVORITES = &H6 '[お気に入り] Public Const CSIDL_STARTUP = &H7 '[スタートアップ] Public Const CSIDL_RECENT = &H8 '[Recent] Public Const CSIDL_SENDTO = &H9 '[SendTo] Public Const CSIDL_BITBUCKET = &HA '[ごみ箱] Public Const CSIDL_STARTMENU = &HB '[スタートメニュー] Public Const CSIDL_DESKTOPDIRECTORY = &H10 '[デスクトップ(フォルダ)] Public Const CSIDL_DRIVES = &H11 '[マイコンピュータ] Public Const CSIDL_NETWORK = &H12 '[ネットワークコンピュータ] Public Const CSIDL_NETHOO = &H13 '[NetHood] Public Const CSIDL_FONTS = &H14 '[Fonts] Public Const CSIDL_TEMPLATES = &H15 '[ShellNew] Public Const BIF_CLOSE = &H1 '特殊フォルダは表示しない Public Const BIF_SHOW = &H2 '特殊フォルダも表示する Public Const BIF_FILES = &H4000 'ファイルも表示する '------------------------------------------------------------------ '■関数名 FolderDlg '■用途 「ファイルを参照」ダイアログを表示して選択したパスを取得 '■引数 nHwnd:親ウインドウのハンドル '■戻り値 ファイル、ディレクトリを選択した場合はそのパス名 ' キャンセルした場合はCancel '------------------------------------------------------------------ Public Function FolderDlg(nHwnd As Long) As String Dim BI As BROWSEINFO 'BROWSEINFO構造体 Dim nPath As String '選択されたパス名を格納する変数 Dim Ret As Long '戻り値 With BI BI.hwndOwner = nHwnd 'ウインドウハンドルの設定 BI.lpszTitle = "フォルダの選択" 'タイトルの設定 BI.pidlRoot = CSIDL_DESKTOP 'ルートの設定 BI.ulFlags = BIF_CLOSE 'フラグの設定 End With '「フォルダを参照」ダイアログを表示 Ret = SHBrowseForFolder(BI) 'バッファを確保 nPath = String(256, Chr(0)) If Ret <> 0 Then 'パスを取得 Call SHGetPathFromIDList(Ret, nPath) 'パスを格納 FolderDlg = nPath Else 'キャンセルに FolderDlg = Cancel End If End Function
APIの呼び出し
[FolderDlg.frm]
Private Sub Command1_Click() Dim Path As String 'パスが格納される変数 '選択したパスを取得する Path = FolderDlg(Form1.hWnd) If Path = Cancel Then MsgBox "キャンセルを選択" Else MsgBox "パス名: " & Path End If End Sub
ソースコード一式のダウンロード
vbapi_folderdlg.zip 2.64 KB (2,706 バイト)
このサンプルの動作環境について
このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。
スポンサーリンク
関連記事
前の記事: | ダイアログ付きでファイルをコピーする |
次の記事: | フォント選定ダイアログを表示する |
公開日:2015年03月03日
記事NO:00321