Ich benötige bspw. die Information "Länge" zu einem Audio- oder Videofile. Diese Daten kann man nicht über FileInfo bekommen. Die Lösung zu diesem Problem fand ich auf folgendem Link, die ich programmtechnisch noch etwas erweitert habe, und die ich mittlerweile gut praktisch anwende. Hier der originale Link: Benötigt wird noch der Verweis auf COM Microsoft Shell Controls And Automation. Der Code: Friend Class ShellInfo Public Property Name As String Public Property Value As String Public Property Index As Short Public Sub New(n As String, v As String, x As Short) Name = n Value = v Index = x End Sub Public Overrides Function ToString() As String Return Name End Function End Class ''' <summary> ''' Ermitteln der aller oder eines Teils der ShellInfos eines Files ''' </summary> ''' <param name="filepath">der Filename inkl. Pfad</param> ''' <param name="theFilter">ein Filter, zum ermitteln spezieller Infos</param> ''' <returns>die Liste der ShellInfos</returns> ''' <param name="Of"></param> Public Function GetXtdShellInfo(filepath As String, Optional theFilter As Array = Nothing) _ As List(Of ShellInfo) Dim xxx As New List(Of ShellInfo) Dim shell As New Shell32.Shell, shFolder As Shell32.Folder shFolder = shell.NameSpace(Path.GetDirectoryName(filepath)) Dim key As String, ndx As Short For Each s As Object In shFolder.Items If shFolder.GetDetailsOf(s, 0).ToLowerInvariant _ = Path.GetFileName(filepath).ToLowerInvariant Then ndx = 0 key = shFolder.GetDetailsOf(shFolder.Items, ndx) ' Je nach Betriebssystem gibt es eine unterschiedliche Anzahl an Einträgen ' (Bspw. W7=290, W8=309, ebenso W=11 mit einigen Lücken.) ' Dies sollte bis zu 310 nicht leere Elemente ergeben Do Until String.IsNullOrEmpty(key) AndAlso ndx > 310 If String.IsNullOrEmpty(key) = False Then If Not IsNothing(theFilter) Then If Array.IndexOf(theFilter, key) >= 0 Then xxx.Add(New ShellInfo(key, shFolder.GetDetailsOf(s, ndx), ndx)) End If Else xxx.Add(New ShellInfo(key, shFolder.GetDetailsOf(s, ndx), ndx)) End If End If ndx += 1 key = shFolder.GetDetailsOf(shFolder.Items, ndx) If key <> "" Then Debug.Print((ndx - 1) & vbTab & key) Loop Exit For End If Next Return xxx End Function
In der Anwendung: Dim xtd As List(Of ShellInfo) Dim shellFilter() As String = {"Bildbreite", "Bildhöhe", "Länge"} ' für ein Video ... xtd = GetXtdShellInfo("myFile", shellFilter) Dieser Tipp wurde bereits 1.132 mal aufgerufen.
Anzeige
![]() ![]() ![]() Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevWizard für VB5/6 ![]() Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats ![]() Dieter Otter sevTabStrip: Rechtsklick auf Reiter erkennen Eine Funktion, mit der sich prüfen lässt, auf welchen Tab-Reiter ein Mausklick erfolgte TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |