Tipp 1.4 - Ausführbarkeit prüfen
Wie kann ich eine Datei auf Ausführbarkeit prüfen?
Mit dieser Funktion können Sie eine Datei auf Ausführbarkeit prüfen. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.
Verwendete Win32-Api-Aufrufe und Typen: SHGetFileInfo - SHFILEINFO
Beispiel:
Public Const MAXPATH As Long = 260 Public Type SHFILEINFO hIcon As Long iIcon As Long dwAttributes As Long szDisplayName As String * MAXPATH szTypeName As String * 80 End Type Public Declare Function SHGetFileInfo Lib _ "shell32.dll" Alias _ "SHGetFileInfoA" _ (ByVal pszPath As String, _ ByVal dwFileAttributes As Long, _ psfi As SHFILEINFO, _ ByVal cbFileInfo As Long, _ ByVal uFlags As Long) As Long Public Function GetExeType(sSourceFile As String) _ As String '// ----------------------------------------------------- '// Methode: | Prüft Datei auf Ausführbarkeit '// ----------------------------------------------------- '// Parameter: | sSourceFile = gültiger Dateipfad '// ----------------------------------------------------- '// Rückgabe: | EXE-Typ und ggf. '// | OS-Versionskennung der Datei '// ----------------------------------------------------- '// Autor: | Stefan Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- Const SHGFI_EXETYPE As Long = &H2000 Const EXE_WIN16 As Long = &H454E Const EXE_DOS16 As Long = &H5A4D Const EXE_WIN32 As Long = &H4550 Dim uSHFileInfo As SHFILEINFO Dim lExeVal As Long Dim lLowWord As Long Dim lHighWord As Long Dim btHighWordLowByte As Byte Dim btHighWordHighByte As Byte Dim sReturn As String lExeVal = SHGetFileInfo(ByVal sSourceFile, _ 0&, _ uSHFileInfo, _ Len(uSHFileInfo), _ SHGFI_EXETYPE) lLowWord = lExeVal And &HFFFF& lHighWord = (lExeVal And Not &HFFFF&) &HFFFF& btHighWordLowByte = lHighWord And &HFF& btHighWordHighByte = (lHighWord And Not &HFF&) &HFF& Select Case lLowWord Case 0: sReturn = "<nicht ausführbar>" Case EXE_WIN16: sReturn = "Win16" Case EXE_DOS16: sReturn = "DOS" Case EXE_WIN32: sReturn = "Win32" Case Else: sReturn = "<unbekannt>" End Select If btHighWordHighByte Then sReturn = sReturn & ", v" & _ VBA.Format(btHighWordHighByte, "#") & _ "." & VBA.Format(btHighWordLowByte, "00") End If GetExeType = sReturn End Function