フォルダの選択ダイアログを表示するには
<かなり応用できるはずです>
宣 言 |
(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 |
引 数 説 明 |
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 |