Seite 1 von 1
Filerequester kombiniert mit openpathrequester?
Verfasst: 24.03.2005 02:11
von zigapeda
Hallo leutz,
Hab mal ne frage gibt es einen requester mit dem man pfade oder dateien wählen kann? Wenn man eine verknüpfung unter windows ertellt kommt auch so ein fenster in dem man beides wählen kann.
Verfasst: 24.03.2005 02:23
von ts-soft
Mithilfe der API-Funktion BrowseForFolder kannste das bewerkstelligen. Ob es hierzu Beispiele im CodeArchiv gibt weiß ich nicht, solltest einfach mal suchen
Verfasst: 24.03.2005 03:19
von zigapeda
kannst du mir den syntax mal posten?
Verfasst: 24.03.2005 04:40
von ts-soft
zigapeda hat geschrieben:kannst du mir den syntax mal posten?
ja
Code: Alles auswählen
Procedure.s PathRequester_with_Files(Titel.s)
Folder.s = Space(#MAX_PATH)
Dir.BROWSEINFO
Dir\hwndOwner = GetActiveWindow_()
Dir\pidlRoot = 17
Dir\pszDisplayName = @Folder
Dir\lpszTitle = @Titel
Dir\ulFlags = #BIF_BROWSEINCLUDEFILES
Dir\lpfn = 0
Dir\lParam = 0
Dir\iImage = 0
result.l = SHBrowseForFolder_(@Dir)
SHGetPathFromIDList_(result, @Folder)
If Folder <> ""
If FileSize(Folder) = - 2
If Right(Folder, 1) <> "" : Folder + "" : EndIf
EndIf
EndIf
CoTaskMemFree_(result)
ProcedureReturn Folder
EndProcedure
Debug PathRequester_with_Files("Nimm Dir nen Ordner oder nimm Dir nen File")
Gruß
Thomas
[Edit]Nachtrag: wenn du: Dir\pidlRoot = 17 in Dir\pidlRoot = 0 änderst, kommst dem Windowsdialog noch etwas näher[/Edit]
Verfasst: 24.03.2005 05:40
von ts-soft
Fall Dir die Version nicht ausreicht, hier noch eine etwas flexiblere Variante:
Code: Alles auswählen
Procedure BrowseCallbackProc(hwnd, msg, lParam, lData)
szDir$ = Space(#MAX_PATH)
Select msg
Case #BFFM_INITIALIZED
SendMessage_(hwnd, #BFFM_SETSELECTION, #BFFM_INITIALIZED, lData)
Case #BFFM_SELCHANGED
If SHGetPathFromIDList_(lParam, @szDir$)
SendMessage_(hwnd, #BFFM_SETSTATUSTEXT, 0, @szDir$)
EndIf
EndSelect
EndProcedure
Procedure.s BrowseForFolder(Style, Titel.s, Path.s)
Folder.s = Space(#MAX_PATH)
Dir.BROWSEINFO
Dir\hwndOwner = GetActiveWindow_()
Dir\pszDisplayName = @Folder
Dir\lpszTitle = @Titel
Dir\ulFlags = Style
Dir\lpfn = @BrowseCallbackProc()
Dir\lParam = @Path
result.l = SHBrowseForFolder_(@Dir)
SHGetPathFromIDList_(result, @Folder)
If Folder <> ""
If FileSize(Folder) = - 2
If Right(Folder, 1) <> "\" : Folder + "\" : EndIf
EndIf
EndIf
CoTaskMemFree_(result)
ProcedureReturn Folder
EndProcedure
Style = #BIF_STATUSTEXT | #BIF_EDITBOX | #BIF_BROWSEINCLUDEFILES | #BIF_USENEWUI
Debug BrowseForFolder(Style, "Wählen Sie das Ziel der Verknüpfung:", "C:\Windows\")
Viel Spaß, alles ohne jegliche Funktionsgarantie
[Edit]Habe den fehlerhaften Code nochmal Korrigiert, hoffe es funktioniert jetzt[/Edit]
Verfasst: 24.03.2005 11:15
von zigapeda
juhu es hat funkioniert danke
mfg zigapeda
