「フォルダを選択」ダイアログを表示する
「フォルダを選択」ダイアログを表示するサンプルです。
サンプルの実行画面
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
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |









