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.058 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 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. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Tipp des Monats Dezemeber 2024 Roland Wutzke MultiSort im ListView-Control Dieses Beispiel zeigt, wie sich verschiedene Sortierfunktionen für ein ListView Control realisieren lassen. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.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. |