Newsgroup: it.comp.lang.visual-basic
Titolo: API BrowseForFolder

Utilizzando l'API BrowseForFolder è possibile specificare una cartella 
all'avvio oppure apre sempre su tutte le risorse del computer?
-- 
Ciao, Sandrobi
-----------------
Se la tua email è fasulla, ti invito a leggere 
http://wiki.news.nic.it/AntiSpam
 

 all'avvio oppure apre sempre su tutte le risorse del computer?
Io googlando ho beccato questa funzione che prende come parametro la path:
'Dichiarazioni per BrowserForFolder
Public Declare Function SHBrowseForFolder Lib "shell32.dll" Alias
"SHBrowseForFolderA" (lpBROWSEINFOTYPE As BROWSEINFOTYPE) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As
Long
Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest
As Any, pSource As Any, ByVal dwLength As Long)
Public Const WM_USER = &H400
Public Const BFFM_SETSELECTIONA As Long = (WM_USER + 102)
Public Const BFFM_SETSELECTIONW As Long = (WM_USER + 103)
Public Declare Function LocalAlloc Lib "kernel32" (ByVal uFlags As Long,
ByVal uBytes As Long) As Long
Public Declare Function LocalFree Lib "kernel32" (ByVal hMem As Long) As
Long
Public Const LPTR = (&H0 Or &H40)
Public Function BrowseForFolder(selectedPath As String) As String
    Dim Browse_for_folder As BROWSEINFOTYPE
    Dim itemID As Long
    Dim selectedPathPointer As Long
    Dim TmpPath As String * 256
    With Browse_for_folder
        '.hOwner = Me.hWnd
        .lpszTitle = "Seleziona una cartella:" ' Titolo dialogo
        .lpfn = FunctionPointer(AddressOf BrowseCallbackProcStr) ' Funzione
di callback per la preselezione cartella
        selectedPathPointer = LocalAlloc(LPTR, Len(selectedPath) + 1) '
Allocamento stringa
        CopyMemory ByVal selectedPathPointer, ByVal selectedPath,
Len(selectedPath) + 1
        .lParam = selectedPathPointer ' Cartella preselezionata
    End With
    itemID = SHBrowseForFolder(Browse_for_folder) ' Apertura finestra di
dialogo
    If itemID Then
        If SHGetPathFromIDList(itemID, TmpPath) Then
            BrowseForFolder = Left$(TmpPath, InStr(TmpPath, vbNullChar) -
1) ' Elimina gli spazi nulli
        End If
        Call CoTaskMemFree(itemID)
    End If
    Call LocalFree(selectedPathPointer)
End Function
-- 
DBMS Firebird
VB6 + Ado

all'avvio oppure apre sempre su tutte le risorse del computer?
Devi usare l'api SendMessage con la costante BFFM_INITIALIZED
qui un esempio:
http://www.vbcity.com/forums/faq.asp?fid=9&cat=Common%20Dialog
--
ciao
  Stefano

 ha scritto nel messaggio 
news:r6ksg299cd5so5oq2...@4ax.com...

Ma com'è che io su Google non trovavo nulla!?
Grazie
Sandrobi 

 Sandrobi
@Alex

Ma com'è che io su Google non trovavo nulla!?
Beh, io sapevo cosa cercare, anche se l'esempio che ti volevo suggerire (il file
AdvBrowseFolder.zip) non l'ho trovato.
Per cui ho guardato un mio sorgente che utilizzava l'API BrowseForFolder, visto
l'uso di BFFM_INITIALIZED e poi cercato un esempio.
Tra l'altro un bell'esempio perchè fa uso di callback.
--
ciao
  Stefano