1. Herfried K. Wagner’s VB.Any
  2. .NET
  3. Frequently Asked Questions

Determining a file’s associated application

Determining a file's associated application

Determining a file's associated application

'FindAssociatedApplication' returns the path to the executable associated
with the file passed to the function.  An exception is thrown if an error

Imports System.Text

Private Declare Auto Function FindExecutable Lib "shell32.dll" ( _
    ByVal lpFile As String, _
    ByVal lpDirectory As String, _
    ByVal lpResult As StringBuilder _
) As Int32

Private Const SE_ERR_FNF As Int32 = 2
Private Const SE_ERR_NOASSOC As Int32 = 31
Private Const SE_ERR_OOM As Int32 = 8

Private Const MAX_PATH As Int32 = 260

Private Function FindAssociatedApplication( _
    ByVal FileName As String _
) As String
    Dim sb As New StringBuilder(MAX_PATH)
    Dim n As Int32 = FindExecutable(FileName, vbNullString, sb)
    If n > 32 Then
        Return sb.ToString()
        Dim s As String = "Unknown error."
        Select Case n
            Case SE_ERR_FNF
                s = "File not found."
            Case SE_ERR_NOASSOC
                s = "No file association found."
            Case SE_ERR_OOM     ' Since Windows XP.
                s = "Out of memory."
        End Select
        Throw New Exception(s)
    End If
End Function


Catch ex As Exception
End Try

'FindExecutable' is used for documents, to find the path of an executable
file, 'AssocQueryString' can be used.