cs_arb
Messages postés40Date d'inscriptionlundi 18 février 2002StatutMembreDernière intervention 5 novembre 2012
-
10 juin 2004 à 18:47
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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
>
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.