[AccessD] A Matter of Killing

Stuart McLachlan stuart.mclachlan at gmail.com
Sun Aug 16 17:02:08 CDT 2009


On 16 Aug 2009 at 14:26, Rocky Smolin wrote:

> I could get around even that possibility by changing gstrBackEndPath to
> gstrFrontEndPath - another handy global I keep around for just such
> application.  I'll have to ask the user what they prefer. User's in Bahrain,
> BTW - another 'remote' location.
> 
> Rocky

Depending on whether or not they need to keep the file afterwards, other possibilities are to 
write the file into the users "Documents", "Desktop" or "Temp" directory - or even the users 
"AppData".

Here's some useful functions if you want to go down that track.  Desktop() is a sample. You 
can create similar functions for the other locations by substituting the appropriate 
CSIDL_xxx in the function.

Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
 (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function SHGetSpecialFolderLocation _
    Lib "shell32" (ByVal hwnd As Long, _
    ByVal nFolder As Long, ppidl As Long) As Long
Private Declare Function SHGetPathFromIDList _
    Lib "shell32" Alias "SHGetPathFromIDListA" _
    (ByVal Pidl As Long, ByVal pszPath As String) As Long
Private Declare Sub CoTaskMemFree Lib "ole32" (ByVal pvoid As Long)
       
Const MAX_PATH = 260
Const NOERROR = 0
Const CSIDL_DESKTOPDIRECTORY = &H0010 
Const CSIDL_PERSONAL =  &H0005   'Documents Directory	
Const %CSIDL_APPDATA = &H001a    '<user name>\Application Data

Public Function TempDir() As String
Dim strPath As String
strPath = Space(MAX_PATH)
GetTempPath Len(strPath), strPath
TempDir = Left(strPath, InStr(1, strPath, vbNullChar) - 1)
End Function

Public Function Desktop() As String
Dim lngPidlFound As Long
Dim lngFolderFound As Long
Dim lngPidl As Long
Dim strPath As String
strPath = Space(MAX_PATH)
lngPidlFound = SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, lngPidl)
If lngPidlFound = NOERROR Then
    lngFolderFound = SHGetPathFromIDList(lngPidl, strPath)
    If lngFolderFound Then
        Desktop = Left$(strPath, _
            InStr(1, strPath, vbNullChar) - 1) & "\"
    End If
End If
CoTaskMemFree lngPidl
End Function





More information about the AccessD mailing list