Affiche une boîte de dialogue qui permet à l'utilisateur de sélectionner un dossier Shell
#include <WinAPIDlg.au3>
_WinAPI_BrowseForFolderDlg ( [$sRoot = '' [, $sText = '' [, $iFlags = 0 [, $pBrowseProc = 0 [, $lParam = 0 [, $hParent = 0]]]]]] )
$sRoot | [optionnel] Le dossier racine à partir duquel commencer la navigation. Seul le dossier spécifié et ses sous-dossiers dans la hiérarchie de l'espace de noms apparaissent dans la boîte de dialogue. Si ce paramètre est 0, la racine de l'espace de noms (le dossier Desktop) est utilisé. |
$sText | [optionnel] La chaîne qui est affichée au-dessus du contrôle Treeview dans la boîte de dialogue. |
$iFlags | [optionnel] Flags spécifiant les options de la boîte de dialogue. Ce paramètre peut être une combinaison des valeurs suivantes: $BIF_BROWSEFORCOMPUTER $BIF_BROWSEFORPRINTER $BIF_BROWSEINCLUDEFILES $BIF_BROWSEINCLUDEURLS $BIF_DONTGOBELOWDOMAIN $BIF_EDITBOX $BIF_NEWDIALOGSTYLE $BIF_NONEWFOLDERBUTTON $BIF_NOTRANSLATETARGETS $BIF_RETURNFSANCESTORS $BIF_RETURNONLYFSDIRS $BIF_SHAREABLE $BIF_STATUSTEXT $BIF_USENEWUI $BIF_UAHINT $BIF_VALIDATE Windows 7 ou une version ultérieure: $BIF_BROWSEFILEJUNCTIONS |
$pBrowseProc | [optionnel] Pointeur sur une fonction de rappel que la boîte de dialogue appelle si un événement se produit. Cette fonction recevra l'un des messages d'événement suivants: $BFFM_INITIALIZED $BFFM_IUNKNOWN $BFFM_SELCHANGED $BFFM_VALIDATEFAILED (Voir MSDN pour plus d'informations) |
$lParam | [optionnel] La valeur que la boîte de dialogue passe à la fonction de rappel. |
$hParent | [optionnel] Handle de la fenêtre parent de la boîte de dialogue. |
Succès: | Retourne le chemin d'accès complet du dossier choisi, ou une chaîne vide si l'utilisateur annule/ferme le dialogue. |
Échec: | Retourne la chaîne vide. |
Consultez SHBrowseForFolder dans la librairie MSDN.
#include <APIDlgConstants.au3> #include <MsgBoxConstants.au3> #include <SendMessage.au3> #include <WinAPIDlg.au3> #include <WinAPIMem.au3> #include <WinAPIMisc.au3> #include <WinAPIShellEx.au3> #include <WinAPIShPath.au3> #include <WinAPISysWin.au3> Local Const $sInitDir = @ProgramFilesDir Local $hBrowseProc = DllCallbackRegister('_BrowseProc', 'int', 'hwnd; uint; lparam; ptr ') Local $pBrowseProc = DllCallbackGetPtr($hBrowseProc) Local $pText = _WinAPI_CreateString($sInitDir) Local $sPath = _WinAPI_BrowseForFolderDlg(_WinAPI_PathStripToRoot($sInitDir), 'Select a folder from the list below.', BitOR($BIF_RETURNONLYFSDIRS, $BIF_EDITBOX, $BIF_VALIDATE), $pBrowseProc, $pText) _WinAPI_FreeMemory($pText) If $sPath Then ConsoleWrite('--------------------------------------------------'& @CRLF) ConsoleWrite($sPath & @CRLF) EndIf DllCallbackFree($hBrowseProc) Func _BrowseProc($hWnd, $iMsg, $wParam, $lParam) Local $sPath Switch $iMsg Case $BFFM_INITIALIZED _WinAPI_SetWindowText($hWnd, 'MyTitle') _SendMessage($hWnd, $BFFM_SETSELECTIONW, 1, $lParam) Case $BFFM_SELCHANGED $sPath = _WinAPI_ShellGetPathFromIDList($wParam) If Not @error Then ConsoleWrite($sPath & @CRLF) EndIf Case $BFFM_VALIDATEFAILED MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Error', _WinAPI_GetString($wParam) & 'is invalid.', 0, $hWnd) Return 1 EndSwitch Return 0 EndFunc ;==>_BrowseProc