Rubrik: Dateisystem · Dateien - allgemein | VB-Versionen: VB.NET | 07.03.08 |
Dateierweiterung einer Datei im Klartext (.NET) Mit nachfolgender Funktion lässt sich die "offizielle" Beschreibung eines registrierten Dateityps unter VB.NET ermitteln. | ||
Autor: Dieter Otter | Bewertung: | Views: 11.361 |
www.tools4vb.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Was ist eine .DLL Datei? Eine Programmbibliothek.
Was ist eine .EXE Datei? Eine Anwendung
Was ist eine .VBP Datei? Eine Visual Basic Projekt Datei
...zumindest sagt uns das das Betriebssystem (oder auch der Windows Explorer)...
Hierbei handelt es sich um die "offizielle" in der Registry eingetragene Beschreibung für im System registrierte Dateitypen bzw. Dateierweiterungen.
Mit nachfolgender Funktion lässt sich die Datei-Beschreibung einer existierenden Datei auch unter Visual Basic .NET ermitteln - und zwar unter Zuhilfenahme des Windows-API, genauer gesagt der SHGetFileInfo-Funktion:
Imports System.Runtime.InteropServices
' Konstanten Private Const MAX_PATH = 260 Private Const SHGFI_TYPENAME = &H400& ' API SHFILEINFO-Struktur <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _ Public Structure SHFILEINFO Public hIcon As Integer Public iIcon As Integer Public dwAttributes As Integer <MarshalAs(UnmanagedType.ByValArray, SizeConst:=MAX_PATH)> _ Public szDisplayName As Char() <MarshalAs(UnmanagedType.ByValArray, SizeConst:=80)> _ Public szTypeName As Char() End Structure ' benötigte API-Deklaration Private Declare Function SHGetFileInfo Lib "shell32.dll" ( _ ByVal pszPath As String, _ ByVal dwFileAttributes As Integer, _ ByRef psfi As SHFILEINFO, _ ByVal cbFileInfo As Integer, _ ByVal uFlags As Integer) As Integer
''' <summary> ''' Ermittelt die Dateibeschreibung einer existierenden Datei ''' </summary> ''' <param name="sFilename">Dateiname inkl. Pfadangabe</param> Public Function GetFileInfoDescr(ByVal sFilename As String) As String Dim SHInfo As New SHFILEINFO Dim sFileDescr As String = "" ' Beschreibung zur Dateierweiterung ermitteln With SHInfo ' Struktur füllen .szDisplayName = New Char(MAX_PATH - 1) {} .szTypeName = New Char(79) {} ' API-Funktion aufrufen SHGetFileInfo(sFilename, 0, SHInfo, Marshal.SizeOf(SHInfo), SHGFI_TYPENAME) ' Datei-Beschreibung sFileDescr = New String(.szTypeName).Trim(Chr(0)) End With Return sFileDescr End Function
Sie übergeben der Funktion GetFileInfoDescr den Dateinamen einer existierenden Datei (inkl. Pfadangabe) und erhalten zurück - die im System gespeicherte "offizielle" Dateibeschreibung.