Eli tässä on tällänen movieplayer....
Player toistaa ainakin AVI, MPG, MPEG, MOV ja WMV tiedostot.
Ja tekstitkin näkyy...
Kaikki tarvittava (Kirjastot yms.) Löytyy Formin listauksesta.
Ohjelman toimivuus kokeiltu VB6-professional editionilla ja Windows Vista Ultimatella.
FORMIN KOODI
' ' KOMPONENTIT: ' ' Microsoft Common Dialog Control 6.0 (SP3) - C:\Windows\System32\comdlg32.ocx ' Microsoft Windows Common Control 6.0 (SP6) - C:\Windows\System32\MSCOMCTL.OCX ' ' OBJEKTIT: ' ' Form 1 Kpl ' CommonDialog 1 Kpl ' Timer 1 Kpl ' Progressbar 1 Kpl ' Label 2 Kpl ' Commandbutton 6 Kpl ' Picturebox 1 Kpl ' Textbox 2 Kpl ' ' CLASS MODULE 1 Kpl ' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''' ''''''''''''''' ''''''''''''' HUOM!!!!!!!!!!!!!!!!!! ''''''''''''''' ''''''''''''' ''''''''''''''' ''''''''''''' Tarvitsee Divx Codec ajurit toimiakseen. ''''''''''''''' ''''''''''''' Toistaa ainakin AVI, MPG, MPEG, MOV ja WMV tiedostot. ''''''''''''' Jos leffan kehyskorkeus on yli 300, progressbar jää kuvan päälle. ''''''''''''''' ''''''''''''' Tämä on esimerkki. ;D ''''''''''''''' ''''''''''''' ''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim MLeffa As New Class1 'MLeffa on Class Module Private Sub Command1_Click() On Error Resume Next MLeffa.Toista 'Haetaan Moduulista Funktio - TOISTA Timer1.Enabled = True 'Timeri päälle ProgressBar1.Max = Val(MLeffa.Pituus_Sek) 'Asetetaan progressbarille "Loppupiste". MLeffa.Odotus 0.5 'Annetaan MCI:lle aikaa latailla (0.5 sekunttia) Label2.Caption = "Pituus: " & MLeffa.Pituus 'Näytetään leffan pituus Picture1.Visible = True Picture1.Width = Val(Text1.Text) * 15 'Pictureboxin leveys Picture1.Height = Val(Text2.Text) * 15 ' pictureboxin korkeus MLeffa.Koko 0, 0, Val(Text1.Text), Val(Text2.Text) ' Leffan koko pixeleissä ProgressBar1.Width = Picture1.Width ' Progressbar1 pituus on yhtäpitkä kuin picture1 ProgressBar1.Visible = True ' Progressbar näkyville Command2.Enabled = True ' Loputkin namiskat aktiivisiksi Command3.Enabled = True Command6.Enabled = True End Sub Private Sub Command2_Click() MLeffa.Seis ' Pysäytetään leffa Timer1.Enabled = False ' Timeri pois päältä MLeffa.Odotus 1 'Annetaan MCI:lle aikaa latailla (0.5 sekunttia) MLeffa.AloitaAlusta ' Aloitetaan leffa alusta Label1.Caption = "Aika: " & MLeffa.Kohta ' Nollataan aika ProgressBar1.Value = MLeffa.Kohta_Sek ' Nollataan sliderin kohta MLeffa.Pause ' Pistetään leffa paussille. End Sub Private Sub Command3_Click() If Command3.Caption = "Pause." Then 'Jos "Pause." - nappulan "Otsake" on Pause: , MLeffa.Pause ' Haetaan Moduulista Funktio - PAUSE Command3.Caption = "Jatka." ' "Pause" - nappulan "Otsake" = Jatka, Timer1.Enabled = False ' Timeri pois päältä (Ettei progressbar liiku ja aika kulu.) Else MLeffa.Jatka ' Muuten antaa leffan jatkua, Command3.Caption = "Pause." ' Pause-nappulan "Otsake" pysyy samana, Timer1.Enabled = True ' Timeri pysyy päällä. End If End Sub Private Sub Command4_Click() Dim a As Long Dim b As Long ' Määritetään uusi leffa CommonDialog:in kautta. Kelpuutetaan AVI, MPEG, MPG ja MOV päätteiset tiedostot. CommonDialog1.Filter = "Avi Files (*.avi)|*.avi|Mpeg Files (*.mpeg)|*.mpeg|Mpg Files (*.mpg)|*.mpg|Mov Files (*.mov)|*.mov|Windows Video(*.wmv)|*.wmv|All Files (*.*)|*.*" CommonDialog1.ShowOpen ' Avataan Windowsin "Browser" tai mikälie... MLeffa.Filename = CommonDialog1.Filename ' Valittu tiedosto, MLeffa.AvaaIkkuna Picture1.hWnd, "child" ' Avataan Leffa "pikkuikkunaan" CommonDialog1.Filename = "" ' Poistetaan valitun leffan "Tiedot" MLeffa.Alkup_Koko a, b ' Haetaan leffan alkuperäinen koko Text1.Text = CStr(a) ' text1 teksti on leffan leveys pikseleissä Text2.Text = CStr(b) ' text2 teksti on leffan korkeus pikseleissä Command1.Enabled = True ' "Toista" - painike aktiiviseksi End Sub Private Sub Command5_Click() MLeffa.Lopeta ' Sammutetaan MCI Timer1.Enabled = False ' Timeri sammutetaan. End Sub Private Sub Command6_Click() MLeffa.AloitaAlusta ' Aloitetaan leffa uudellen alusta. End Sub Private Sub Form_Load() ' Formille ja muille objekteille vähän asettelua. Me.Width = 13000 ' Tässä tää on toteutettu vähän "kömpelösti", Me.Height = 6500 ' mutta tehköön jokainen itse kuinka haluaa.. Me.BackColor = vbBlack With ProgressBar1 .Scrolling = 1 .Height = 200 .left = 1800 .Width = 100 .Visible = False .top = 5200 End With Picture1.top = 500 Picture1.left = 1800 Picture1.Visible = False Picture1.BackColor = vbBlack With Label1 .Caption = "Aika :" .BackColor = vbBlack .ForeColor = vbWhite .Width = 1200 .Height = 300 .left = 1800 .top = 5500 End With With Label2 .Caption = "Pituus: " .BackColor = vbBlack .ForeColor = vbWhite .Width = 1200 .Height = 300 .left = 300 .top = 4600 .Alignment = 2 End With With Text1 .Text = "" .ForeColor = vbWhite .BackColor = vbBlack .Height = 200 .Width = 500 .top = 4000 .left = 300 End With With Text2 .Text = "" .ForeColor = vbWhite .BackColor = vbBlack .Height = 200 .Width = 500 .top = 4000 .left = 1000 End With With Command1 .Caption = "Toista." .Width = 1200 .Height = 300 .left = 300 .top = 1800 .Enabled = False End With With Command2 .Caption = "Seis." .Width = 1200 .Height = 300 .left = 300 .top = 2200 .Enabled = False End With With Command3 .Caption = "Pause." .Width = 1200 .Height = 300 .left = 300 .top = 2600 .Enabled = False End With With Command4 .Caption = "Avaa tiedosto." .Width = 1200 .Height = 400 .left = 300 .top = 500 End With With Command5 .Caption = "Sulje tiedosto." .Width = 1200 .Height = 400 .left = 300 .top = 1000 End With With Command6 .Caption = "Alkuun." .Width = 1200 .Height = 300 .left = 300 .top = 3000 .Enabled = False End With Timer1.Interval = 1000 End Sub Private Sub Form_Unload(Cancel As Integer) MLeffa.Lopeta ' Suljetaan MCI Unload Me ' Formi pois End ' Lopetetaan ohjelma End Sub Private Sub Timer1_Timer() On Error Resume Next Label1.Caption = "Aika: " & MLeffa.Kohta ' Haetaan "Aika" - Labellille leffan kohta, ProgressBar1.Value = MLeffa.Kohta_Sek ' ja progressbarin kohta... End Sub
CLASS MODULEN KOODI
' Option Explicit Private Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long Private 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 Data As String * 128 Public Error As Long Public Filename As String Public Function AvaaIkkuna(hWnd As Long, WindowStyle As String) Filename = Chr$(34) & Filename & Chr$(34) Error = mciSendString("close movie", 0, 0, 0) Error = mciSendString("open " & Filename & " type mpegvideo alias movie parent " & hWnd & " style " & WindowStyle & " ", 0, 0, 0) Error = mciSendString("open " & Filename & " alias movie parent " & hWnd & " style " & WindowStyle & " ", 0, 0, 0) End Function Public Function Toista() Error = mciSendString("play movie", 0, 0, 0) End Function Public Function Seis() Error = mciSendString("stop movie", 0, 0, 0) End Function Public Function Pituus_Millisek() As Long Error = mciSendString("set movie time format ms", 0, 0, 0) Error = mciSendString("status movie length", Data, 128, 0) Pituus_Millisek = Val(Data) End Function Public Function Pituus_Sek() As Long Pituus_Sek = Pituus_Millisek \ 1000 End Function Public Function Pause() Error = mciSendString("pause movie", 0, 0, 0) End Function Public Function Jatka() Error = mciSendString("resume movie", 0, 0, 0) End Function Public Function Kohta_Millisek() As Long Error = mciSendString("set movie time format ms", 0, 0, 0) Error = mciSendString("status movie position wait", Data, 128, 0) Kohta_Millisek = Val(Data) End Function Public Function Lopeta() Error = mciSendString("close all", 0, 0, 0) End Function Public Function Kohta() As String Kohta = Aika(Kohta_Millisek) End Function Public Function Pituus() As String Pituus = Aika(Pituus_Millisek) End Function Private Function Aika(ByVal timein As Long) As String On Error GoTo Virhe Dim Tunti As Integer Dim Minuutti As Integer Dim Sekuntti As Integer Dim Jäljellä As Long Dim Kesto As String Jäljellä = timein / 1000 Tunti = Int(Jäljellä / 3600) Jäljellä = Jäljellä Mod 3600 Minuutti = Int(Jäljellä / 60) Jäljellä = Jäljellä Mod 60 Sekuntti = Jäljellä If Tunti > 0 Then Kesto = Trim(Str(Tunti)) & ":" Else Aika = "" End If If Minuutti >= 10 Then Kesto = Kesto & Trim(Str(Minuutti)) ElseIf Minuutti > 0 Then Kesto = Kesto & Trim(Str(Minuutti)) Else Kesto = Kesto & "0" End If Kesto = Kesto & ":" If Sekuntti >= 10 Then Kesto = Kesto & Trim(Str(Sekuntti)) ElseIf Sekuntti > 0 Then Kesto = Kesto & "0" & Trim(Str(Sekuntti)) Else Kesto = Kesto & "00" End If Aika = Kesto Exit Function Virhe: MsgBox Err.Description, , " Virhe." End Function Public Function Kohta_Sek() As Long Kohta_Sek = Kohta_Millisek \ 1000 End Function Sub Odotus(duration) Dim StartTime As Long Dim X As Long StartTime = Timer Do While Timer - StartTime < duration X = DoEvents() Loop Exit Sub End Sub Public Function AloitaAlusta() Error = mciSendString("seek movie to start", 0, 0, 0) Toista End Function Public Function Koko(left As Long, top As Long, Width As Long, Height As Long) Error = mciSendString("put movie window at " & left & " " & top & " " & Width & " " & Height, 0, 0, 0) End Function Public Function Alkup_Koko(wWidth As Long, wHeight As Long) On Error Resume Next Dim a As String Dim b As String Dim C As String Dim f As String Dim g As String a = Alkup_Koko2 b = InStr(1, a, " ") '2 C = InStr(b + 1, a, " ") '4 f = Mid(a, C + 1) '9 g = InStr(1, f, " ") wWidth = Val(left(f, g)) wHeight = Val(Mid(f, g)) End Function Public Function Alkup_Koko2() As String Error = mciSendString("where movie source", Data, 128, 0) Alkup_Koko2 = Data End Function
Aihe on jo aika vanha, joten et voi enää vastata siihen.