GetOpenFileName (comdlg32)
Last changed: DragunityMAX-119.247.213.153

.
Summary
TODO - a short description

C# Signature:

[DllImport("comdlg32.dll", SetLastError=true, CharSet = CharSet.Auto)]
static extern bool GetOpenFileName([In, Out] OpenFileName ofn);

VB Signature:

Declare Function GetOpenFileName Lib "comdlg32.dll" (TODO) As TODO

User-Defined Types:

OpenFileName

Alternative Managed API:

OpenFileDialog

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

    ' Copyright
    ' Microsoft Corporation
    ' All rights reserved

    'typedef struct tagOFN {
    '  DWORD     lStructSize;
    '  HWND      hwndOwner;
    '  HINSTANCE     hInstance;
    '  LPCTSTR       lpstrFilter;
    '  LPTSTR    lpstrCustomFilter;
    '  DWORD     nMaxCustFilter;
    '  DWORD     nFilterIndex;
    '  LPTSTR    lpstrFile;
    '  DWORD     nMaxFile;
    '  LPTSTR    lpstrFileTitle;
    '  DWORD     nMaxFileTitle;
    '  LPCTSTR       lpstrInitialDir;
    '  LPCTSTR       lpstrTitle;
    '  DWORD     Flags;
    '  WORD      nFileOffset;
    '  WORD      nFileExtension;
    '  LPCTSTR       lpstrDefExt;
    '  LPARAM    lCustData;
    '  LPOFNHOOKPROC lpfnHook;
    '  LPCTSTR       lpTemplateName;
    '#if (_WIN32_WINNT >= 0x0500)
    '  void *    pvReserved;
    '  DWORD     dwReserved;
    '  DWORD     FlagsEx;
    '#endif // (_WIN32_WINNT >= 0x0500)
    '} OPENFILENAME, *LPOPENFILENAME;

    <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
    Public Class OpenFileName

        Public structSize As Integer = 0
        Public dlgOwner As IntPtr = IntPtr.Zero
        Public instance As IntPtr = IntPtr.Zero
        Public filter As String = Nothing
        Public customFilter As String = Nothing
        Public maxCustFilter As Integer = 0
        Public filterIndex As Integer = 0
        Public file As String = Nothing
        Public maxFile As Integer = 0
        Public fileTitle As String = Nothing
        Public maxFileTitle As Integer = 0
        Public initialDir As String = Nothing
        Public title As String = Nothing
        Public flags As Integer = 0
        Public fileOffset As Short = 0
        Public fileExtension As Short = 0
        Public defExt As String = Nothing
        Public custData As IntPtr = IntPtr.Zero
        Public hook As IntPtr = IntPtr.Zero
        Public templateName As String = Nothing
        Public reservedPtr As IntPtr = IntPtr.Zero
        Public reservedInt As Integer = 0
        Public flagsEx As Integer = 0

    End Class 'OpenFileName

    Public Class LibWrap
        'BOOL GetOpenFileName(LPOPENFILENAME lpofn);
        Declare Auto Function GetOpenFileName Lib "Comdlg32.dll" ( _
        <[In](), Out()> ByVal ofn As OpenFileName) As Boolean
    End Class 'LibWrap

    Private Function ShowOpen(Optional ByVal filter As String = ("All files" & ChrW(0) & "*.*" & ChrW(0)), _    
                  Optional ByVal title As String = "Open File Dialog...", _
                  Optional ByVal defext As String = "*", _
                  Optional ByVal path As String = "C:\") As String

        Try
        Dim ofn As New OpenFileName

        ofn.structSize = Marshal.SizeOf(ofn)
        ofn.filter = filter
        ofn.file = New String(New Char(256) {})
        ofn.maxFile = ofn.file.Length
        ofn.fileTitle = New String(New Char(64) {})
        ofn.maxFileTitle = ofn.fileTitle.Length
        ofn.initialDir = path
        ofn.title = title
        ofn.defExt = defext

        If LibWrap.GetOpenFileName(ofn) Then
            Console.WriteLine("Selected file with full path: {0}", ofn.file)
            Console.WriteLine("Selected file name: {0}", ofn.fileTitle)
            Console.WriteLine("Offset from file name: {0}", ofn.fileOffset)
            Console.WriteLine("Offset from file extension: {0}", ofn.fileExtension)

            Return ofn.file
        End If
        Catch ex As Exception
        Debug.Assert(False)
        Return System.String.Empty
        End Try

    End Function

Documentation