Help : Selection répertoire et browser

cs_arb Messages postés 40 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 5 novembre 2012 - 10 juin 2004 à 18:47
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 10 juin 2004 à 19:35
Bonjour

Mon appli permet à l'utilisateur de sélectionner le répertoire ou l'appli ira creer des fichiers. Comme l'utilisateur sélectionne le répertoire je n'utilise pas un commondialog mias le code ci dessous. Par contre je cherche comment ouvrir le browser sur le dernier répertoire qui a été choisi (memoriser dans un fichier type recent file) et non toujours au niveau du poste de travail. Comment ouvrir le browser sur un répertoire definit?

merci

> '
> ' Origine: http://www.vbthunder.com/source/explorer/folderbrowse.htm
> '=====
> '
> ' Exemple d'utilisation:
> '
> 'Private Sub cmdFolder_Click()
> ' Dim sFolder As String
> ' sFolder = GetFolder(hwnd)
> ' If Len(sFolder) > 0 Then
> ' MsgBox "Folder selected was: " & sFolder
> ' Else
> ' MsgBox "No folder selected!"
> ' End If
> 'End Sub
> '
>
>
> Public Type BROWSEINFO
> hOwner As Long
> pidlRoot As Long
> pszDisplayName As String
> lpszTitle As String
> ulFlags As Long
> lpfn As Long
> lParam As Long
> iImage As Long
> End Type
>
> 'BROWSEINFO.ulFlags values:
> Public Const BIF_RETURNONLYFSDIRS = &H1
> Public Const BIF_DONTGOBELOWDOMAIN = &H2
> Public Const BIF_STATUSTEXT = &H4
> Public Const BIF_RETURNFSANCESTORS = &H8
> Public Const BIF_BROWSEFORCOMPUTER = &H1000
> Public Const BIF_BROWSEFORPRINTER = &H2000
>
> Public Declare Function SHGetPathFromIDList Lib "shell32.dll" _
> Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
> ByVal pszPath As String) As Long
>
> Public Declare Function SHBrowseForFolder Lib "shell32.dll" _
> Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
>
> Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
>
>
> Public Function GetFolder(ByVal hWndModal As Long) As String
> Dim bInf As BROWSEINFO
> Dim RetVal As Long
> Dim PathID As Long
> Dim RetPath As String
> Dim Offset As Integer
> 'Set the properties of the folder dialog
> bInf.hOwner = hWndModal
> bInf.lpszTitle = "Please select a folder:"
> bInf.ulFlags = BIF_RETURNONLYFSDIRS
> 'Show the Browse For Folder dialog
> PathID = SHBrowseForFolder(bInf)
> RetPath = Space$(512)
> RetVal = SHGetPathFromIDList(ByVal PathID, ByVal RetPath)
> If RetVal Then
> 'Trim off the null chars ending the path
> 'and display the returned folder
> Offset = InStr(RetPath, Chr$(0))
> GetFolder = Left$(RetPath, Offset - 1)
> 'Free memory allocated for PIDL
> CoTaskMemFree PathID
> Else
> GetFolder = ""
> End If
> End Function
>

1 réponse

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 juin 2004 à 19:35
C'est nettement plus complique, faut fournir une fonction callback a la structure BROWSEINFO et modifier quelques flags.
Je te conseillerai de laisser cela pour les langages de bas niveau et d'utiliser ma DLL qui te fournira ce service.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Rejoignez-nous