Google Groepen ondersteunt geen nieuwe Usenet-berichten of -abonnementen meer. Historische content blijft zichtbaar.

Dateiinfo einer Datei

49 weergaven
Naar het eerste ongelezen bericht

Mario Jungwirth

ongelezen,
29 jan 2003, 08:01:0229-01-2003
aan
Hallo NG

Ich habe mit eine Intranetseite gebaut die mir verschiede Verzeichnisse
listet (und deren Dateien)
Wenn ich in Windows XP nun eine AVI Datei anklicke und auf
Eigenschaften/Dateiinfo gehe dann wird mir die
Audiobittrate/Videokomprimierung angezeigt

Wie kann ich diese in c# ermitteln?

mfg Mario Jungwirth

Thomas Scheidegger [MVP] NETMaster

ongelezen,
29 jan 2003, 09:35:2429-01-2003
aan
Diese Informationen werden von der Windows-Shell
explizit ausgewertet,
und sind nicht direkt in .NET abrufbar.

Daher muss man entweder
- die (COM-) Schnittstellen der Windows-Shell per Interop benutzen,
- oder für das AVI Dateiformat binär selber auswerten.


--
Thomas Scheidegger - MVP .NET - 'NETMaster'
http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/


Mario Jungwirth

ongelezen,
29 jan 2003, 10:40:4229-01-2003
aan

"Thomas Scheidegger [MVP] NETMaster" <spam.ne...@swissonline.ch> schrieb
im Newsbeitrag news:egVsdO6xCHA.1656@TK2MSFTNGP09...

Hallo Thomas

Danke

Aber hast du vielleicht eine Beschreibung der Windows Shell Schnittstelle
oder vielleicht eine Ahnung wie man die AVI DAtei binär auslesen kann?


Thomas Scheidegger [MVP] NETMaster

ongelezen,
29 jan 2003, 11:27:5329-01-2003
aan
> wie man die AVI DAtei binär auslesen kann?


Die Theorie: "AVI RIFF File Reference"
http://msdn.microsoft.com/library/en-us/directx9_c/directx/htm/avirifffilereference.asp


z.B. "AVIMAINHEADER Structure"
http://msdn.microsoft.com/library/en-us/directx9_c/directx/htm/avimainheaderstructure.asp

Und Google fand (ohne Gewähr)
http://i31www.ira.uka.de/docs/semin94/05_AVI/main_html.html
http://www.fourcc.org/


Es gibt sicherlich tausende C++ Source im Web
für RIFF-Dateistrukturen....


in .NET wie gesagt ist all dies nicht drin, daher
müsste man z.B. mit der Low-Level 'BinaryReader' Klasse
alle Felder binär auslesen...

> Beschreibung der Windows Shell Schnittstelle

evtl. auch über das 'alte' VfW - API, etwa 'AVIFileInfo',
hier ein VB6 Bsp:
http://www.mvps.org/vbnet/index.html?code/avi/avifileinfo.htm

=> Da in .NET nichts drin, empfehle ich daher erst eine
gut C++/Win32/VB6 Lösung zu suchen, zu verstehen,
und dann portieren.

Herfried K. Wagner

ongelezen,
29 jan 2003, 12:40:5629-01-2003
aan
Hallo Mario!

"Mario Jungwirth" <m...@webgin.at> schrieb:


> > Daher muss man entweder
> > - die (COM-) Schnittstellen der Windows-Shell per Interop benutzen,
> > - oder für das AVI Dateiformat binär selber auswerten.

Eventuell kannst du hiermit (VBScript-Code) etwas anfagen. Ich habe aber
nicht getestet, ob man damit auch an die interessanten Informationen kommt.
Bei Bitmaps kann man so u.a. auch die Masse ermitteln, also einen Versuch
ist es wert. Das Ganze muss man dann eben noch "konvertieren".

\\\
Dim arrHeaders(34)
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\Windows\")
For i = 0 to 33
arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i)
Next
For Each strFileName in objFolder.Items
If strFilename = "Granit.bmp" Then
For i = 0 to 33
Wscript.echo i & vbtab & arrHeaders(i) _
& ": " & objFolder.GetDetailsOf(strFileName, i)
Next
End If
Next
///

Grüsse,
Herfried K. Wagner


Thomas Scheidegger [MVP] NETMaster

ongelezen,
29 jan 2003, 13:14:3529-01-2003
aan
Dies wäre hier

http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/objects/folder/getdetailsof.asp


und in VS.NET eine COM-Referenz auf
"Microsoft Shell Controls and Automation" (shell32.dll)

und C# Code:

using System.IO;
using Shell32;
...
string path = @"C:\WINDOWS\clock.avi";

ShellClass sh = new ShellClass();
Folder dir = sh.NameSpace( Path.GetDirectoryName( path ) );
FolderItem item = dir.ParseName( Path.GetFileName( path ) );
for( int i = 0; i < 30; i++ )
{
string det = dir.GetDetailsOf( item, i );
Console.WriteLine( "ID {0} = {1}", i, det );
}


ergibt:

ID 0 = clock.avi
ID 1 = 81 KB
ID 2 = Video Clip
ID 3 = 2003-01-29 16:05
ID 4 = 2001-08-23 15:00
ID 5 = 2003-01-29 16:05
ID 6 = A
ID 7 = Online
ID 21 = 00:00:12
ID 22 = 8kbps
ID 26 = 321 x 321
ID 27 = 321 pixels
ID 28 = 321 pixels


ich bin mir aber nicht so sicher,
wie robust dieser Ansatz ist....

Herfried K. Wagner

ongelezen,
29 jan 2003, 13:21:1029-01-2003
aan
Hallo Thomas!

"Thomas Scheidegger [MVP] NETMaster" <spam.ne...@swissonline.ch>

schrieb:


> ergibt:
>
> ID 0 = clock.avi
> ID 1 = 81 KB
> ID 2 = Video Clip
> ID 3 = 2003-01-29 16:05
> ID 4 = 2001-08-23 15:00
> ID 5 = 2003-01-29 16:05
> ID 6 = A
> ID 7 = Online
> ID 21 = 00:00:12
> ID 22 = 8kbps
> ID 26 = 321 x 321
> ID 27 = 321 pixels
> ID 28 = 321 pixels

Der Vorteil im Gegensatz zum Auslesen der Informationen durch Analyse des
Dateiheaders liegt darin, dass er bei allen Dateiformaten, die solche
Zusatzdaten anbieten, funktionieren sollte.

> ich bin mir aber nicht so sicher,
> wie robust dieser Ansatz ist....

Aufgrund meiner Abneigung gegen COM-Komponenten in .NET-Projekten würde ich
es nicht einsetzen, wenn es etwas einfacheres und stabileres gibt. Ab und zu
geht es aber darum, überhaupt einmal eine Lösung zu finden...

Grüsse,
Herfried K. Wagner


0 nieuwe berichten