[AccessD] Get Folder Name via API

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
> 
> 



More information about the AccessD mailing list