Below you will see that i have made a few changes to your code.
Imports System.Runtime.InteropServices
Module PropertiesDialog
Public Structure SHELLEXECUTEINFO
Public cbSize As IntPtr
Public fMask As IntPtr
Public hwnd As IntPtr
Public lpVerb As String 'Removed MarshalAs
Public lpFile As String 'Removed MarshalAs
Public lpParameters As String 'Removed MarshalAs
Public lpDirectory As String 'Removed MarshalAs
Dim nShow As Integer
Dim hInstApp As IntPtr
Dim lpIDList As IntPtr
Public lpClass As String 'Removed MarshalAs
Public hkeyClass As IntPtr
Public dwHotKey As IntPtr
Public hIcon As IntPtr
Public hProcess As IntPtr
End Structure
Private Const SEE_MASK_FLAG_NO_UI = &H400
Private Const SEE_MASK_INVOKEIDLIST = &HC
Private Const SEE_MASK_NOCLOSEPROCESS = &H40
Private Const SW_SHOW As Integer = 5
'Dekclarationen zum Anzeigen der Dateieigenschaften
Private Declare Function ShellExecuteEx Lib "shell32.dll" (ByRef LPSHELLEXECUTEINFO As SHELLEXECUTEINFO) As Long 'Added ByRef
Sub ShowProperties(ByVal path As String)
Dim fi As New IO.FileInfo(path)
Dim info As New SHELLEXECUTEINFO()
info.cbSize = CType(Marshal.SizeOf(info), IntPtr)
info.lpVerb = "properties"
info.lpFile = fi.Name
info.lpDirectory = fi.DirectoryName
info.nShow = CType(SW_SHOW, IntPtr)
info.fMask = CType(SEE_MASK_INVOKEIDLIST, IntPtr)
ShellExecuteEx(info)
End Sub
End Module