Also wenn Sie mich fragen, ich mag den Explorer nicht,
er hat mir zu viele Macken und zeigt alles und nichts an und läßt manches einfach weg.
Kleine "Bug" am Rande, mappen Sie sich mal ein lokales Laufwerk eines anderen
Computers im Netz unter WinNT (bei 95/98 sicher auch) und gehen Sie in den Papierkorb
(Recycler) und Sie werden staunen, das der fremde User Ihre Dateien im Papierkorb hat.
Aber wenn die Schrecksekunde vorbei ist, werden Sie erkennen, das der Explorer trotz
Zugriff auf ein fremdes Verzeichnis, den Inhalt Ihres Papierkorbs anzeigt.
Vielleicht verstehen Sie jetzt ein wenig, warum ich den Explorer nicht mag.
Aber es gibt natürlich auch Funktionen, die hat er eben drauf und die kann man gut für
eigene Programme verwenden. Eine Funktion davon wollen wir hier etwas näher beleuchten.
Betrachten Sie die Detailanzeige im Explorer, so werden Sie sehen, daß in der Spalte Typ
zu jeder Datei eine Beschreibung steht. Wenn auch Sie diese Information für Ihr Programm
benötigen, dann ist nachfolgender Tipp der Ihre.
Allgemein/Deklarationen
Const MAX_PATH = 260
Const SHGFI_TYPENAME = &H400&
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
'Abschneiden der Nullzeichen
Allgemein/GetStrFromBuffer
Function GetStrFromBuffer(szStr As String) As String
If InStr(szStr, vbNullChar) Then
GetStrFromBuffer = Left$(szStr, InStr(szStr, vbNullChar) - 1)
Else
GetStrFromBuffer = szStr
End If
End Function
Allgemein/GetTypeName
Private Function GetTypeName(sFilePath As String)
Dim shfi As SHFILEINFO
If SHGetFileInfo(ByVal sFilePath, 0&, shfi, Len(shfi), SHGFI_TYPENAME) Then
If InStr(shfi.szTypeName, vbNullChar) > 1 Then
GetTypeName = GetStrFromBuffer(shfi.szTypeName)
Else
GetTypeName = "<keinem Dateityp zugeordnet>"
End If
End If
End Function
Funktionsaufruf
MsgBox GetTypeName("C:\command.com")
In unserem Beispiel wird dem Befehl der Name der zu prüfenden Datei übergeben und das
Ergebnis in einer Messagebox ausgegeben. |