Lotus Notes FAQ Visit Our Sponsor!

How do you open a Win32 File Dialog in LotusScript?

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


Applies to Notes Versions: 4, 4.5, 4.6
Last Modified: March 16, 2008