UDF > WinAPIEx > Dialog >


_WinAPI_BrowseForFolderDlg

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]]]]]] )

Paramètres

$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.

Valeur de retour

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.

Voir aussi

Consultez SHBrowseForFolder dans la librairie MSDN.

Exemple

#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