Zum vorherigen AbschnittZum nächsten Abschnitt Anwendungstyp ermitteln
Wenn Sie in VB eine EXE-Datei mit z.B. dem Shell-Befehl starten, übernimmt Windows die Entscheidung über die Ausführungsart (DOS, 16 Bit, 32 Bit,...). Mit Hilfe einer API-Funktion sowie einigen Codezeilen können jedoch auch Sie herausfinden, zu welchem Typ eine EXE-Datei zählt. So lässt sich z.B. auch herausfinden, ob eine EXE-Datei auch wirklich ausführbar ist und nicht nur fälschlicherweise diese Endung zugewiesen bekommen hat.
Ihre Bewertung:
 12345
    

Bewertung dieses Tipps:  (bewertet von insgesamt 9 Besuchern)

 Zum vorherigen AbschnittZum nächsten Abschnitt Deklarationen
Für die später folgenden Funktion benötigen wir eine API-Funktion sowie eine Typdeklaration und einige Konstanten. Um die folgenden Funktion in eigenen Projekten nutzen zu können, muss sie zuerst im Kopf des Formulars oder des Moduls deklariert werden:

Const MAX_PATH = 260

Private Type SHFILEINFO
   hIcon As Long
   iIcon As Long
   dwAttributes As Long
   szDisplayName As String * MAX_PATH
   szTypeName As String * 80
End Type

Private Declare Function SHGetFileInfo Lib "Shell32" Alias "SHGetFileInfoA" (ByVal pszPath As Any, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long
Const SHGFI_EXETYPE = &H2000&

Const EXE_WIN16 = &H454E
Const EXE_DOS16 = &H5A4D
Const EXE_WIN32 = &H4550

 Zum vorherigen AbschnittZum nächsten Abschnitt Die Funktion
Binden Sie nun die folgenden Funktion in Ihr Projekt ein (ich empfehle, sie in einem Modul zu platzieren, auf jeden Fall muss Sie im gleichen Modul oder der gleichen Form wie die API-Funktion liegen):

Function GetExeType(ByVal Filename As String) As String
   Dim dwExeVal As Long
   Dim shfi As SHFILEINFO
   Dim dwLowWord As Long
   Dim dwHighWord As Long
   Dim bHighWordLowByte As Byte
   Dim bHighWordHighByte As Byte
   Dim sRtn As String

   dwExeVal = SHGetFileInfo(Filename, 0&, shfi, Len(shfi), SHGFI_EXETYPE)
   dwLowWord = dwExeVal And &HFFFF&

   Select Case dwLowWord
      Case 0
         sRtn = "(nicht ausführbar)"
      Case EXE_WIN16
         sRtn = "16 Bit Windows"
      Case EXE_DOS16
         sRtn = "DOS"
      Case EXE_WIN32
         sRtn = "32 Bit Windows"
      Case Else
         sRtn = "(unbekannt)"
   End Select

   GetExeType = sRtn
End Function

 Zum vorherigen AbschnittZum nächsten Abschnitt Der Aufruf
Der Aufruf der Funktion ist sehr unkompliziert:

MsgBox "Die Anwendung ist eine Datei für " & GetExeType("C:\Datei.exe")

 Zum vorherigen AbschnittZum nächsten Abschnitt Beispielprojekt
Sie können sich hier ein Beispiel als Projektdatei für Vb5 und Vb6 herunterladen.
 Projekt herunterladen



Quellen: SHADOWare.de
Letzte Änderung: 28.12.00
©2000 by SHADOWare, Thomas Bachem