フォルダの選択ダイアログを表示するには

<かなり応用できるはずです>

宣 言

(Private) Type BROWSEINFO
hwndOwner As Long'ダイアログボックスの親ウインドウのハンドル
pidlRoot As Long'ルート フォルダ(CSIDL_xxx)
pszDisplayName As String
lpszTitle As String'ダイアログの解説文
ulFlags As Long'フォルダーのタイプを示すフラッグ(BIF_xxx)
lpfn As Long'コールバック関数のエントリポイント(0 可能)
lParam As Long'同、パラメータ
iImage As Long'フォルダー用アイコンのシステムイメージリストのID
End Type

(Private) Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBROWSEINFO As BROWSEINFO) As Long
(Private) Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
※(Private)は必要に応じて削除


引 数 説 明

SHBrowseForFolder

lpBROWSEINFO

BROWSEINFO構造体。データ内容は宣言通り。

SHGetPathFromIDList

pidl

SHBrowseFolderの戻り値

pszPath

フォルダ名(戻り値)

サ ン プ ル プ ロ グ ラ ム

まず、VisualBasicを起動してプロジェクトを新しく作成してください。そしてコマンドボタンをは張りつけ、次のコードを貼り付け実行してください。メッセージを表示して終了します。

動作確認:Visual Basic 5.0(Visual Basic 4.0でも問題なく動作するはずです),Windows98

Private Type BROWSEINFO
hwndOwner As Long 'ダイアログボックスの親ウインドウのハンドル
pidlRoot As Long 'ルート フォルダ(CSIDL_xxx)
pszDisplayName As String
lpszTitle As String 'ダイアログの解説文
ulFlags As Long 'フォルダーのタイプを示すフラッグ(BIF_xxx)
lpfn As Long 'コールバック関数のエントリポイント(0 可能)

lParam As Long '同、パラメータ
iImage As Long 'フォルダー用アイコンのシステムイメージリストのID
End Type

Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBROWSEINFO As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Private Sub Command1_Click()
Dim Tp As BROWSEINFO
Dim PathName As String * 256
Dim Folder As Long
Tp.hwndOwner = Me.hWnd
Folder = SHBrowseForFolder(Tp)
SHGetPathFromIDList Folder, PathName
MsgBox PathName
End Sub

トップに戻る
Visual Basicワンポイントテクニック目次に戻る

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル