「フォルダの参照」-「C:\」ダイアログを開く <TOP>
「フォルダの参照」ダイアログを開きます。ダイアログ゙内の選択したフォルダパスをEditBoxに表示させています。
lstrcat("C:\", "")とC:\を指定していますので、他のドライブを指定した場合はEditBoxに表示されません。
SHBrowseForFolder 「フォルダの参照」ダイアログを開く
SHGetPathFromIDList アイテムIDリストをファイルシステムのパス名に変換
CoTaskMemFree アイテムIDリストの解放
lstrcat ある文字列の末尾に別の文字列を結合
'================================================================ '= 「フォルダの参照」ダイアログを開く
'= (SHBrowseForFolder.bas) '================================================================ #include "Windows.bi" Type BROWSEINFO hWndOwner As Long '表示されるダイアログボックスのオーナーウィンドウを指定 pIDLRoot As Long 'ルートフォルダを表すアイテムIDリストへのポインタを指定 pszDisplayName As Long 'ユーザーに選択されたアイテムの表示名を格納するバッファのアドレスを指定 lpszTitle As Long 'ダイアログボックスのツリービューコントロールの上部に表示される文字列のアドレスを指定 ulFlags As Long 'ダイアログボックスのオプションフラグを指定 lpfnCallback As Long lParam As Long iImage As Long End Type #define BIF_RETURNONLYFSDIRS 1 'ファイルシステムディレクトリのみを返します #define BIF_DONTGOBELOWDOMAIN 2 'ダイアログボックスのツリービューコントロールにドメインレベルのネットワークフォルダを含めない #define BIF_STATUSTEXT 4 'ダイアログボックスにステータス領域を表示 #define BIF_RETURNFSANCESTORS 8 'シェルネームスペース階層構造の中でルートフォルダの下にあるファイルシステムサブフォルダのみを返す #define BIF_EDITBOX 10 'ユーザーがアイテム名を書き込むことができるエディットコントロールを表示 #define MAX_PATH 260 ' 「フォルダの参照」ダイアログを開き、選択されたフォルダのID値を取得 Declare Function Api_SHBrowseForFolder& Lib "Shell32" Alias "SHBrowseForFolder" (lpbi As BROWSEINFO) ' アイテムIDリストをファイルシステムのパス名に変換 Declare Function Api_SHGetPathFromIDList& Lib "Shell32" Alias "SHGetPathFromIDList" (ByVal pidList&, ByVal lpBuffer$) ' アイテムIDリストの解放 Declare Sub Api_CoTaskMemFree Lib "ole32" Alias "CoTaskMemFree" (ByVal hMem&) ' ある文字列の末尾に別の文字列を結合 Declare Function Api_lstrcat& Lib "kernel32" Alias "lstrcatA" (ByVal lpString1$, ByVal lpString2$) Var Shared Edit1 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var iNull As Integer Var lpIDList As Long Var Ret As Long Var sPath As String Var bi As BROWSEINFO bi.hWndOwner = GwthWnd bi.lpszTitle = Api_lstrcat("C:\", "") 'ある文字列の末尾に別の文字列を結合 bi.ulFlags = BIF_DONTGOBELOWDOMAIN lpIDList = Api_SHBrowseForFolder(bi) If lpIDList Then sPath = String$(MAX_PATH, 0) Ret = Api_SHGetPathFromIDList(lpIDList, sPath) Api_CoTaskMemFree lpIDList iNull = InStr(sPath, Chr$(0)) If iNull Then sPath = Left$(sPath, iNull - 1) End If End If Edit1.SetWindowText sPath End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End