Das kann so nicht funktionieren. Unter VB.NET sind hier umfangreichere Änderungen notwendig:
Imports System.Runtime
Imports System.Runtime.InteropServices
Public Class Form1
' zunächst die benötigten API-Deklarationen
Private Declare Function AVIFileOpen Lib "avifil32" _
Alias "AVIFileOpenA" ( _
ByRef ppfile As Integer, _
ByVal szFile As String, _
ByVal mode As Integer, _
ByVal pclsidHandler As Integer) As Integer
Private Declare Function AVIFileRelease Lib "avifil32" ( _
ByVal pfile As Integer) As Integer
Private Declare Function AVIFileInfo Lib "avifil32" _
Alias "AVIFileInfoA" ( _
ByVal pfile As Integer, _
ByRef pfi As AVIInfo, _
ByVal lSize As Integer) As Integer
Private Declare Sub AVIFileInit Lib "avifil32" ()
Private Declare Sub AVIFileExit Lib "avifil32" ()
' AVI Info-Struktur
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Private Structure AVIInfo
Public dwMaxBytesPerSec As Integer
Public dwFlags As Integer
Public dwCaps As Integer
Public dwStreams As Integer
Public dwSuggestedBufferSize As Integer
Public dwWidth As Integer
Public dwHeight As Integer
Public dwScale As Integer
Public dwRate As Integer
Public dwLength As Integer
Public dwEditCount As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=64)> _
Public szFileType As String
End Structure
' Breite und Höhe der animierten Bildsequenz ermitteln
' (Rückgabewert erfolgt in Pixel!!!)
Public Sub AVI_GetSize(ByVal sFile As String, _
ByRef nWidth As Integer, ByRef nHeight As Integer)
Dim hFile As Integer
Dim AviInfo As New AVIInfo
' Fehlerbehandlung aktivieren
On Error Resume Next
' Initialisieren
AVIFileInit()
' AVI öffnen (Handle erstellen)
If AVIFileOpen(hFile, sFile, &H20, 0&) = 0 Then
' Infos lesen
If AVIFileInfo(hFile, AviInfo, Marshal.SizeOf(AviInfo)) = 0 Then
nWidth = AviInfo.dwWidth
nHeight = AviInfo.dwHeight
End If
AVIFileRelease(hFile)
End If
' Beenden
AVIFileExit()
On Error GoTo 0
End Sub
' Länge (Spieldauer) ermitteln
' (Rückgabewert erfolgt in Millisekunden)
Public Function AVI_GetLength(ByVal sFile As String) As Integer
Dim hFile As Integer
Dim AviInfo As New AVIInfo
Dim nLength As Integer
' Fehlerbehandlung aktivieren
On Error Resume Next
' Initialisieren
AVIFileInit()
' AVI öffnen (Handle erstellen)
If AVIFileOpen(hFile, sFile, &H20, 0) = 0 Then
' Infos lesen
If AVIFileInfo(hFile, AviInfo, Marshal.SizeOf(AviInfo)) = 0 Then
nLength = AviInfo.dwLength
End If
AVIFileRelease(hFile)
End If
' Beenden
AVIFileExit()
On Error GoTo 0
' Rückgabewert
Return nLength
End Function
... _________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de |