Avi's in VB5 abspielen

Naben Leutz,
ich habe eine Frage… und zwar wie kann man AVI’s in der Form abspielen?
Es sollte in der Form wiedergegeben werden.
Ausserdem sollte das Video immer von vorne starten.
Wäre nett wenn ihr mir antworten könntet.
mfG,
Daniel

Hallo,

ja. Geh zu Projekt -> Komponenten und such Dir den Mediaplayer. Dann musst Du fast nichts selbst programmieren, da ist alles schon fertig und besser wird es über die API (geht auch, ist aber kompliziert) auch nicht.

Gruß, Rainer

moin,
Jo funktioniert … nicht so gut…
und zwar weiss ich ersten nicht welchen player ich nehmen soll und zweitenskann man nirgens eine datei eingeben.
es wird auch nix wieder gegeben.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

Jo funktioniert … nicht so gut…

???

und zwar weiss ich ersten nicht welchen player ich nehmen soll

wie viele hast Du Denn? WindowsMediaPlayer habe ich nur einen in der Liste.

und zweitenskann man nirgens eine datei eingeben.
es wird auch nix wieder gegeben.

Mediaplayer auf die Form, eine Button, Code einfügen …

Option Explicit

Private Sub Command1\_Click()
 WindowsMediaPlayer1.URL = "C:\Beispiel.wmv"
End Sub

… den Button klicken, Läuft. WMV, AVI … geht.

Gruß, Rainer

Hallo Daniel,

AVI Files kannst du mittels der API MCISendString abspielen :smile:
Dort stehst du aber vor dem Problem das du soweit ich weiss kein Endlos Loop machen kannst :S

Um das zu erreichen, muesstest du eine Callback Procedure schreiben und dort das Ende des Files abfragen und dann erneut starten.
Aber das ist nicht gerade binnen 5 Minuten getippselt und Bedarf ein wenig Erfahrung mittels Subclassing:wink:

An deiner Stelle wuerde ich wie es Rainer bereits sagte, den WMP nehmen :smile:

MfG Alex

Aber willst du weiterhin auf die API pochen, so kannst du das als Ansatz nehmen

'in ein Modul folgenden Code

Option Explicit

Public Declare Function mciSendString Lib "winmm.dll" \_
 Alias "mciSendStringA" (ByVal lpstrCommand As \_
 String, ByVal lpstrReturnString As String, ByVal \_
 uReturnLength As Long, ByVal hwndCallback As Long) \_
 As Long

Private Declare Function CallWindowProc Lib "user32" Alias \_
 "CallWindowProcA" (ByVal lpPrevWndFunc As Long, \_
 ByVal hwnd As Long, ByVal msg As Long, ByVal wParam \_
 As Long, ByVal lParam As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias \_
 "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex \_
 As Long, ByVal dwNewLong As Long) As Long

Private Const MCI\_NOTIFY As Long = &H3B9&
Private Const MCI\_NOTIFY\_SUCCESS As Long = &H1&
Private Const GWL\_WNDPROC As Long = -4&

Private hPWnd As Long
Private sFile as String
Private Repeat as Boolean
Private Handle as Long

Public Sub MCI\_Start(AviFile as String,Wiederholen as Boolean, HForm as Form)
Repeat=Wiederholen
Handle=HForm.Hwnd
If Not Repeat Then 
 hPWnd = SetWindowLong(Handle, GWL\_WNDPROC, AddressOf checkMCI)
 Repeat=True
End If
sFile=AviFile
Call mciSendString("close " & sFile, 0&, 0&, 0&amp:wink:
Call mciSendString("open " & sFile, 0&, 0&, Handle)
Call mciSendString("play " & sFile & " notify", 0&, 0&, Handle)
End Sub

Public Sub MCI\_Stop()
Call mciSendString("close " & sFile, 0&, 0&, 0&amp:wink:
If Repeat Then
 Call SetWindowLong(Handle, GWL\_WNDPROC, hPWnd)
 Repeat = False
End If
End Sub

Function checkMCI(ByVal hwnd As Long, ByVal uMsg As Long, \_
 ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = MCI\_NOTIFY And wParam = MCI\_NOTIFY\_SUCCESS Then Call MCI\_Start
checkMCI = CallWindowProc(hPWnd, hwnd, uMsg, wParam, lParam)
End Function

Ist ungetestet, sollte aber klappen :smile:

Vor dem testen, das PRoject speichern :smile: Bei Subclassing kann es vorkommen das die IDE abschmiert :wink:

MfG Alex