bonsoir
j'utilise "SHBrowseForFolder" pour sélectionner un répertoire j'aurais voulu mettre le répertoire "Images" ou "pictures" ou "mypictures" comme répertoire de départ . je pense que je dois agir sur "pIDLRoot" mais comment coder
merci d'avance
Version imprimable
bonsoir
j'utilise "SHBrowseForFolder" pour sélectionner un répertoire j'aurais voulu mettre le répertoire "Images" ou "pictures" ou "mypictures" comme répertoire de départ . je pense que je dois agir sur "pIDLRoot" mais comment coder
merci d'avance
Bonjour;
Il y a peut-être ce Code qui répond à ta demande.
Merci
j'ai fait ce qui suit ce qui me manquait c'était la fonction "SHGetSpecialFolderLocation" et "SHGetPathFromIDList " et ce qui représente le répertoire picture Public Const CSIDL_MYPICTURES = &H27
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 Option Explicit 'ensemble pour déclarer le répertoire qui contient les photos Private Declare Function SHBrowseForFolder Lib "shell32" (lpBI As BROWSEINFO) As Long 'affiche une boite de dialogue _ qui permet à l'utilisateur de sélectionner un répertoire 'Si l'utilisateur choisit le bouton d'annulation dans la zone de dialogue, la valeur de retour est NULLE. 'adresse de la structure "Browseinfo" qui contiens les informations utilisé pour afficher la boîte de dialogue. Private Type BROWSEINFO 'description de la boite de dialogue hwndOwner As Long pidlRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long lpfnCallback As Long lParam As Long iImage As Long End Type 'BROWSEINFO est une structure qui contient les paramètres pour la fonction SHBrowseForFolder. _ Elle reçoit les informations sur le dossier que l'utilisateur a sélectionné. 'hwndOwner: Handle de la fenêtre qui affiche la boîte de dialogue 'pidlRoot: Pointeur sur un identifiant de liste précisant l'emplacement du dossier "racine" pour le parcours _ de dossiers. Seul le dossier spécifié ainsi que ses sous-dossiers apparaîtront dans la boîte de dialogue. _ Ce membre peut être à Null mais dans ce cas la racine par défaut sera le bureau. 'pszDisplayName: adresse d'un buffeur pour recevoir le nom d'affichage du répertoire choisie par l'utilisateur. _ la taille de ce buffeur est présumé être à MAX_path. 'lpszTitle: adresse de d'une chaine de caractère montrée au-dessus de l'arbre dans la zone de dialogue. _ Cette chaine peut être employée pour indiquer des instructions à l'utilisateur. 'ulFlags: Valeur spécifiant les types de dossiers à afficher dans la boîte de dialogue ainsi que d'autres options _ Ce membre peut inclure zéro ou une combinaison des valeurs suivantes: _ BIF_BROWSEFORCOMPUTER; Retourne seulement un ordinateur. Si l'utilisateur sélectionne autre chose qu'un ordinateur, le bouton OK est grisé. _ BIF_browseforprinter: Retourne seulement une imprimante. Si l'utilisateur sélectionne autre chose qu'une imprimante, le bouton OK est grisé. _ BIF_browseincludefiles: la boite de dialogue fera apparitre les fichiers en plus des répertoires _ BIF_dontgobelowdomain; 'inclut pas les dossiers réseau en dessous du niveau de domaine dans la vue de l'arborescence. _ BIF_editbox:.Version 4,71 la boite de dialogue l'utilisateur peut introduire au clavier le nom d'un article. _ BIF_returnfsancestors: Si l'utilisateur choisit n'importe quoi autre qu'un ancêtre de système de fichiers, le bouton OK est grisé. _ BIF_returnonlyfsdirs:si lutilisateur choisit autre chose qu'un répertoire, le bouton OK est grisé. _ BIF_statustext: incluent un secteur de statut dans la zone de dialogue. La fonction de rappel de service peut placer le texte de statut en envoyant des messages à la zone de dialogue. _ BIF_validate: Version 4,71 de . Si l'utilisateur dactylographie un nom inadmissible dans la boîte d'édition, _ le dialogue de lecture rapide appellera BrowseCallbackProc de l'application avec le message de BFFM_validatefailed. _ Ce drapeau est ignoré si BIF_editbox n'est pas indiqué. 'lpfn: adresse de d'une fonction application-définie que la zone de dialogue appelle quand un événement se produit. _ Pour plus d'information, voyez la fonction de BrowseCallbackProc. _ Ce membre peut être NUL. 'lParam: Application-a défini la valeur que la zone de dialogue passe à la fonction de rappel de service, _ si on est indiqué. 'iImage: variable pour recevoir l'image qui est associée au répertoire choisi. L'image est indiqué comme index sur la liste d'image de système. Private Const BIF_RETURNONLYFSDIRS = 1 Private Const BIF_DONTGOBELOWDOMAIN = 2 Public Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, _ ByVal nFolder As Long, ppidl As Long) As Long Public Const CSIDL_DRIVES = &H11 Public Const CSIDL_MYPICTURES = &H27 Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, _ ByVal lpBuffer As String) As Long 'converti un identifiant de liste en en path de fichier Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, _ ByVal lpString2 As String) As Long 'the lstrcat function appends one string to another. Public Function SelectFolder(Titre As String, Handle As Long) As String Dim lpIDList As Long Dim strBuffer As String Dim strTitre As String Dim tBrowseInfo As BROWSEINFO Dim retval As Long ' 'valeur de retour strTitre = Titre With tBrowseInfo .hwndOwner = Handle retval = SHGetSpecialFolderLocation(Handle, CSIDL_MYPICTURES, .pidlRoot) '.pszDisplayName = Space(260) .lpszTitle = lstrcat(strTitre, "") .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN End With lpIDList = SHBrowseForFolder(tBrowseInfo) If (lpIDList) Then strBuffer = String(260, vbNullChar) SHGetPathFromIDList lpIDList, strBuffer SelectFolder = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1) End If End Function