| |

Fortgeschrittene ProgrammierungRe: SHBrowseForFolder ohne UNC-Pfade | |  | Autor: Notausstieg | Datum: 22.09.08 17:26 |
| Selbst das funktioniert nicht. hier jetzt mal den Quelltext meiner Funktion (Da fehlt einiges, da ein Foreneintrag max. 5KB groß sein darf)
Private Const MAX_PATH = 260
Private Const WM_USER = &H400
Private Const BFFM_INITIALIZED = 1
Private Const BFFM_SELCHANGED As Long = 2
Private Const BFFM_SETSTATUSTEXTA As Long = (WM_USER + 100)
Private Const BFFM_SETSTATUSTEXTW As Long = (WM_USER + 104)
Private Const BFFM_ENABLEOK As Long = (WM_USER + 101)
Private Const BFFM_SETSELECTIONA As Long = (WM_USER + 102)
Private Const BFFM_SETSELECTIONW As Long = (WM_USER + 103)
Private Const OFN_NONETWORKBUTTON As Long = &H20000
Private Const BIF_NEWDIALOGSTYLE As Long = &H40
Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
Private Const BIF_STATUSTEXT As Long = &H4
Private Const LMEM_FIXED = &H0
Private Const LMEM_ZEROINIT = &H40
Private Const LPTR = (LMEM_FIXED Or LMEM_ZEROINIT)
' Zeigt den BrowseForFolder-Dialog an.
Public Function BrowseForFolder(DialogText As String, _
DefaultPath As String, _
OwnerhWnd As Long, _
Optional ShowCurrentPath As Boolean = True, _
Optional RootPath As Variant, _
Optional NewDialogStyle As Boolean = False, _
Optional IncludeFiles As Boolean = False) As String
Dim biBrowseInfo As BROWSEINFO
Dim lPIDL As Long
Dim sBuffer As String
Dim lBufferPointer As Long
With biBrowseInfo
' Handle des übergeordneten Fensters
.hOwner = OwnerhWnd
' PIDL des Rootordners zuweisen
If Not IsMissing(RootPath) Then .pidlRoot = PathToPIDL(RootPath)
' Dialogtext zuweisen
If ShowCurrentPath And DialogText = "$" Then DialogText = "" ' Wird intern
' nicht zugelassen
.lpszTitle = DialogText
' Stringbuffer für aktuell selektierten Pfad zuweisen
If ShowCurrentPath Then .pszDisplayName = sBuffer
' Dialogeinstellungen zuweisen
.ulFlags = OFN_NONETWORKBUTTON Or BIF_RETURNONLYFSDIRS Or _
IIf(ShowCurrentPath, BIF_STATUSTEXT, 0) Or _
IIf(NewDialogStyle, BIF_NEWDIALOGSTYLE, 0) Or _
IIf(IncludeFiles, BIF_BROWSEINCLUDEFILES, 0)
' Callbackfunktion-Adresse zuweisen
.lpfnCallback = FARPROC(AddressOf CallbackString)
' PIDL des vorselektierten Ordnerpfades zuweisen (wird im
' lpData-Parameter an die Callback-Funktion weitergeleitet)
.lParam = PathToPIDL(DefaultPath)
End With
' BrowseForFolder-Dialog anzeigen
lPIDL = SHBrowseForFolder(biBrowseInfo)
If lPIDL Then
' Stringspeicher reservieren
sBuffer = Space$(MAX_PATH)
' Selektierten Pfad aus der zurückgegebenen PIDL ermitteln
SHGetPathFromIDList lPIDL, sBuffer
' Nullterminierungszeichen des Strings entfernen
sBuffer = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
' Selektierten Pfad zurückgeben
BrowseForFolder = sBuffer
' Reservierten Task-Speicher wieder freigeben
Call CoTaskMemFree(lPIDL)
End If
' Stringspeicher wieder freigeben
If ShowCurrentPath Then Call LocalFree(lBufferPointer)
End Function Dazu gehören noch weitere Funktionen und Anweisungen
Hab aber an dem Code bis auf die Flags nichts geändert.
Danke
Grüße
Notausstieg |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevZIP40 Pro DLL 
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|