Advanced Path Requester [Windows]
Posted: Fri Aug 18, 2023 8:23 pm
For KCC
Simple and right to the required folder
Ascii or Unicode
PB x86 or x64

Simple and right to the required folder
Ascii or Unicode
PB x86 or x64
Code: Select all
#BIF_RETURNONLYFSDIRS = 1;
#BIF_DONTGOBELOWDOMAIN = 2;
#BIF_STATUSTEXT = 4;
#BIF_RETURNFSANCESTORS = 8;
#BIF_EDITBOX = 16;
#BIF_VALIDATE = 32;
#BIF_NEWDIALOGSTYLE = 64;
#BIF_BROWSEINCLUDEURLS = 128;
;#BIF_USENEWUI = #BIF_EDITBOX | #BIF_NEWDIALOGSTYLE
#BIF_BROWSEFORCOMPUTER = $1000;
#BIF_BROWSEFORPRINTER = $2000;
#BIF_BROWSEINCLUDEFILES = $4000;
#BIF_SHAREABLE = $8000;
#BFFM_INITIALIZED = 1;
#BFFM_SELCHANGED = 2;
#BFFM_VALIDATEFAILEDA = 3;
#BFFM_VALIDATEFAILEDW = 4;
#BFFM_SETSTATUSTEXTA = #WM_USER + 100;
#BFFM_ENABLEOK = #WM_USER + 101;
#BFFM_SETSELECTIONA = #WM_USER + 102;
#BFFM_SETSELECTIONW = #WM_USER + 103;
#BFFM_SETSTATUSTEXTW = #WM_USER + 104;
#BFFM_SETOKTEXT = #WM_USER + 105;
#BFFM_SETEXPANDED = #WM_USER + 106
Global STYLE
CompilerIf #PB_Compiler_Unicode
STYLE = #BFFM_SETSELECTIONW
CompilerElse
STYLE = #BFFM_SETSELECTIONA
CompilerEndIf
Procedure PathCB(hWnd, uMsg, lParam, lData)
Select uMsg
Case #BFFM_INITIALIZED
If lData
SendMessage_ (hwnd, STYLE, 1, lData)
Delay(100)
PostMessage_ (hwnd, STYLE, 1, lData)
EndIf
EndSelect
EndProcedure
Procedure.S PathRequesterAPI( StatusText.S, Path.S)
Folder.S = Space(#MAX_PATH)
bi.BROWSEINFO
bi\ulFlags = #BIF_NONEWFOLDERBUTTON|#BIF_NEWDIALOGSTYLE |#BIF_RETURNONLYFSDIRS
bi\lpfn = @PathCB()
bi\lParam = @Path
bi\lpszTitle = @StatusText
Result = SHBrowseForFolder_(@bi)
SHGetPathFromIDList_(Result, @Folder)
CoTaskMemFree_(Result)
ProcedureReturn Folder
EndProcedure
PathRequesterAPI( "Select database folder", "c:\PureBasic_601_x86\Examples\Sources\data")