This is an example of how to call the standard file open dialog in Windows 95 or NT:
' From Andre Guirard Option Public Option Declare
Dim Filter As String Dim FileName As String Dim FileTitle As String Dim TruncName As String
Dim VaultWIPRoot As String Dim VaultWIPUserPath As String
Type tagOPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As Long nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String Flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As Long End Type
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (OPENFILENAME As tagOPENFILENAME) As Long
Dim OPENFILENAME As tagOPENFILENAME
Public Const OFN_ALLOWMULTISELECT = &H200 Public Const OFN_CREATEPROMPT = &H2000 Public Const OFN_ENABLEHOOK = &H20 Public Const OFN_ENABLETEMPLATE = &H40 Public Const OFN_ENABLETEMPLATEHANDLE = &H80 Public Const OFN_EXPLORER = &H80000 Public Const OFN_EXTENSIONDIFFERENT = &H400 Public Const OFN_FILEMUSTEXIST = &H1000 Public Const OFN_HIDEREADONLY = &H4 Public Const OFN_LONGNAMES = &H200000 Public Const OFN_NOCHANGEDIR = &H8 Public Const OFN_NODEREFERENCELINKS = &H100000 Public Const OFN_NOLONGNAMES = &H40000 Public Const OFN_NONETWORKBUTTON = &H20000 Public Const OFN_NOREADONLYRETURN = &H8000 Public Const OFN_NOTESTFILECREATE = &H10000 Public Const OFN_NOVALIDATE = &H100 Public Const OFN_OVERWRITEPROMPT = &H2 Public Const OFN_PATHMUSTEXIST = &H800 Public Const OFN_READONLY = &H1 Public Const OFN_SHAREAWARE = &H4000 Public Const OFN_SHAREFALLTHROUGH = 2 Public Const OFN_SHARENOWARN = 1 Public Const OFN_SHAREWARN = 0 Public Const OFN_SHOWHELP = &H10
Function OpenCommDlg () Dim Title As String Dim DefExt As String Dim szCurDir As String Dim APIResults% 'Give the dialog a caption title. Title = "Add supporting document" & Chr$(0) 'Allocate string space for returned strings FileName = Chr$(0) & Space$(255) & Chr$(0) FileTitle = Space$(255) & Chr$(0) 'If the user does not specify an extension, append TXT. DefExt = "TXT" & Chr$(0) 'Set up the default directory szCurDir = Curdir$ & Chr$(0) 'Set up the data structure before you call the GetOpenFileName OPENFILENAME.lStructSize = Len(OPENFILENAME) 'If the OpenFile Dialog box is not linked to any form use this line. 'It will pass a null pointer. OPENFILENAME.hwndOwner = 0& OPENFILENAME.lpstrFilter = Filter OPENFILENAME.nFilterIndex = 1 OPENFILENAME.lpstrFile = FileName OPENFILENAME.nMaxFile = Len(FileName) OPENFILENAME.lpstrFileTitle = FileTitle OPENFILENAME.nMaxFileTitle = Len(FileTitle) OPENFILENAME.lpstrTitle = Title OPENFILENAME.Flags = OFN_FILEMUSTEXIST OPENFILENAME.lpstrDefExt = DefExt OPENFILENAME.hInstance = 0 OPENFILENAME.lpstrCustomFilter = 0 OPENFILENAME.nMaxCustFilter = 0 OPENFILENAME.lpstrInitialDir = szCurDir OPENFILENAME.nFileOffset = 0 OPENFILENAME.nFileExtension = 0 OPENFILENAME.lCustData = 0 OPENFILENAME.lpfnHook = 0 OPENFILENAME.lpTemplateName = 0 'This will pass the desired data structure to the Windows API, 'which will in turn it uses to display the Open Dialog form. APIResults% = GetOpenFileName(OPENFILENAME) If APIResults% <> 0 Then FileName = Cstr( OPENFILENAME.lpstrFile ) FileTitle = Cstr( OPENFILENAME.lpstrFileTitle ) OpenCommDlg = 1 Else OpenCommDlg = 0 End If End Function
Sub Initialize If (OpenCommDlg = 1) Then Print " " Else Print "No documents were attached." End If End Sub
For non-Windows Notes 4.5 and above users, you can use:
@Prompt([LocalBrowse])