Andy Lacey
andy at minstersystems.co.uk
Tue Jan 6 12:24:53 CST 2004
Thanks guys. You all have code that uses the same API (SHBrowseForFolder).
Works well but I had hoped to find some way of using the File Save/Save As
dialog but returning just a folder name. The advantage of that is that you
can create a new folder on the hoof. But if it was possible then I'm sure
you'd be using it too. Thanks for all your suggestions.
Andy Lacey
http://www.minstersystems.co.uk
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Dan Waters
> Sent: 06 January 2004 17:34
> To: 'Access Developers discussion and problem solving'
> Subject: RE: [AccessD] Get Folder Name via API
>
>
> Andy,
>
> This is what I use - credits are included. Cut and paste
> into a standard module. I use a global string variable to
> carry the path to a folder.
>
> Dan Waters
>
> '-------------------------------
>
> Option Compare Database
> Option Explicit
>
> Private Type BrowseInfo
> hWndOwner As Long
> pIDLRoot As Long
> pszDisplayName As Long
> lpszTitle As Long
> ulFlags As Long
> lpfnCallback As Long
> lParam As Long
> iImage As Long
> End Type
>
> Const BIF_RETURNONLYFSDIRS = 1
> Const MAX_PATH = 260
>
> Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem
> As Long) Private Declare Function lstrcat Lib "kernel32"
> Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2
> As String) As Long Private Declare Function SHBrowseForFolder
> Lib "shell32" (lpbi As
> BrowseInfo) As Long
> Private Declare Function SHGetPathFromIDList Lib "shell32"
> (ByVal pidList As Long, ByVal lpBuffer As String) As Long
>
> '---------------------------------
>
> Public Sub GetFolderName()
> On Error GoTo EH
>
> 'KPD-Team 1998
> 'URL: http://www.allapi.net/
> 'KPDTeam at Allapi.net
>
> Dim intNull As Integer
> Dim lngIDList As Long
> Dim lngResult As Long
> Dim stgPath As String
> Dim udtBI As BrowseInfo
>
> With udtBI
> 'Set the owner window
> '.hWndOwner = Me.hwnd
>
> 'lstrcat appends the two strings and returns the
> memory address
> '.lpszTitle = lstrcat("C:\", "")
>
> 'Return only if the user selected a directory
> .ulFlags = BIF_RETURNONLYFSDIRS
>
> End With
>
> 'Show the 'Browse for folder' dialog
> lngIDList = SHBrowseForFolder(udtBI)
>
> If lngIDList Then
>
> stgPath = String$(MAX_PATH, 0)
>
> 'Get the path from the IDList
> SHGetPathFromIDList lngIDList, stgPath
>
> 'free the block of memory
> CoTaskMemFree lngIDList
>
> '-- Get location of first null value
> intNull = InStr(stgPath, vbNullChar)
>
> If intNull > 0 Then
> '-- Trim nulls from name
> GstgFolderName = Left$(stgPath, intNull - 1)
> Else
> GstgFolderName = ""
> End If
> Else
> GstgFolderName = ""
> End If
>
> Exit Sub
>
> EH:
> Application.Echo True
> Call GlobalErrors("", Err.Number, Err.Description,
> CurrentObjectName,
> "GetFolderName")
>
> End Sub
>
>
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Andy Lacey
> Sent: Tuesday, January 06, 2004 9:42 AM
> To: Access Developers discussion and problem solving
> Subject: [AccessD] Get Folder Name via API
>
>
> Must've done thsi before but can't find it. I want to ask the
> user for a folder name (into which I'm going to store stuff).
> I want to use the Windows common file dialog so that it looks
> neat and offers to create a new folder and so on. However I
> don't want to put a Common Dialog control on the form (always
> has version issues) so want to use the API method. But the
> code I have (from Dev Ashish) insists on a filename not just
> a folder, and the other code on his site to browse a folder
> list doesn't use the normal dialog. Anyone got code for this?
>
> --
> Andy Lacey
> http://www.minstersystems.co.uk
>
>
> ________________________________________________
> Message sent using UebiMiau 2.7.2
>
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/a> ccessd
> Website:
> http://www.databaseadvisors.com
>
>
>
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/a> ccessd
> Website:
> http://www.databaseadvisors.com
>
>