Hola Allemaal,
ik heb het volgende probleem:
ik heb code die een dialoogscherm toont om een map te selecteren. Dit werkt volledig naar behoren op 1 ding na. Het lukt me niet goed om een beginmap mee te geven. Er wordt altijd begonnen bij het bureablad, ik wil dit zelf kunnen aangeven. Dit lukt me zelfs, echter kan je dan geen niveau meer omlaag, alleen nog omhoog. Dus als je C:\Map Y\Map X instelt kan je nooit meer in Map Y komen, alleen Map X en de daarboven liggende mappen.
Die beginmap wil ik mee geven wanneer het dialoogscherm voor de 2e keer wordt aangeroepen, deze map moet dan dezelfde zijn als die de 1e keer werd geselecteerd.
Dit is de code die ik gebruik:
in "Pidl" staat dus een getal wat de geselecteerde map voorstelt.
Iemand enig idee??
ik heb het volgende probleem:
ik heb code die een dialoogscherm toont om een map te selecteren. Dit werkt volledig naar behoren op 1 ding na. Het lukt me niet goed om een beginmap mee te geven. Er wordt altijd begonnen bij het bureablad, ik wil dit zelf kunnen aangeven. Dit lukt me zelfs, echter kan je dan geen niveau meer omlaag, alleen nog omhoog. Dus als je C:\Map Y\Map X instelt kan je nooit meer in Map Y komen, alleen Map X en de daarboven liggende mappen.
Die beginmap wil ik mee geven wanneer het dialoogscherm voor de 2e keer wordt aangeroepen, deze map moet dan dezelfde zijn als die de 1e keer werd geselecteerd.
Dit is de code die ik gebruik:
Code:
'constante voor de mapbrowser
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
Public Const BIF_RETURNONLYFSDIRS = &H1
Public Const BIF_DONTGOBELOWDOMAIN = &H2
Public Const BIF_NEWDIALOGSTYLE As Long = &H40
'Public Const BIF_STATUSTEXT = &H4
'Public Const BIF_RETURNFSANCESTORS = &H8
'Public Const BIF_BROWSEFORCOMPUTER = &H1000
'Public Const BIF_BROWSEFORPRINTER = &H2000
Public Const MAX_PATH = 260
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
Code:
Sub SelecteerMap()
Dim bi As BROWSEINFO
Dim pidl As Long
Dim path As String
Dim pos As Integer
Dim strDoelmap As String
Dim strBijlage As String
Dim x As Integer
For x = 1 To 2
'message to be displayed in the Browse dialog
bi.lpszTitle = "Selecteer de doelmap"
'the type of folder to return.
bi.ulFlags = BIF_RETURNONLYFSDIRS + BIF_NEWDIALOGSTYLE + BIF_DONTGOBELOWDOMAIN
'geef de root aan, als nog niet bekend is het 0, dit is het bureablad, anders is _
het de eerst gekozen map
bi.pidlRoot = pidl
'show the browse for folders dialog
pidl = SHBrowseForFolder(bi)
'the dialog has closed, so parse & display the
'user's returned folder Selection contained In pidl
path = Space$(MAX_PATH)
If SHGetPathFromIDList(ByVal pidl, ByVal path) Then
pos = InStr(path, Chr$(0))
'MsgBox Left(path, pos - 1)
strDoelmap = Left(path, pos - 1)
'voeg aan het einde \ toe als deze er niet staat
If Right(strDoelmap, 1) <> "\" Then
strDoelmap = strDoelmap & "\"
End If
MsgBox strDoelmap
End If
Next x
End Sub
in "Pidl" staat dus een getal wat de geselecteerde map voorstelt.
Iemand enig idee??