Ich versuchte heute den ganzen Tag einen Lautstärkeregler einzubauen. Ich setzte dazu einen VScroll ein und fügte Code beim Change-Ereignis ein, die Funktionen wurden auf dem Form oder im separaten Modul mit den MCI-Funktionen eingefügt. Habe sämtliche (!) bei Google auffindbaren (jedenfalls mit meinen Suchbegriffen) Beispiele probiert aber ich schaffte es nicht. Wie könnte ich den Code um einen Lautstärkeregler (und toll wäre einen Balken, der die Position anzeigt und verschoben werden kann zum spulen, wie beim WMP) ergänzen?
Vielen Dank!
Habe bisher folgenden Code:
sowie
Vielen Dank!
Habe bisher folgenden Code:
Visual Basic-Quellcode
- Private Sub Command1_Click()
- On Error GoTo err
- MP3_Play sFilename, "MyAlias"
- err:
- End Sub
- Private Sub Command2_Click()
- On Error Resume Next
- MP3_Stop "MyAlias"
- End Sub
- Private Sub Command3_Click()
- With CommonDialog1
- .Filter = "mp3 Dateien *.mp3|*.mp3"
- .ShowOpen
- sFilename = .filename
- End With
- Label1.Caption = sFilename
- MP3_Stop "MyAlias"
- MP3_Play sFilename, "MyAlias"
- Exit Sub
- err: MsgBox "Wiedergabe nicht möglich", vbCritical, "Fehler"
- End Sub
- Private Sub Command4_Click()
- frmAbout.Show
- End Sub
- Private Sub Form_Load()
- On Error Resume Next
- If Command$ <> "" Then
- ' Annahme: Es wurde eine Datei angegeben,
- ' die ausgelesen und in einer TextBox angezeigt
- ' werden soll
- Dim sInhalt As String
- ' Evtl. vorhandene Anführungszeichen entfernen
- sFilename = Replace(Command$, Chr$(34), "")
- On Error GoTo 0
- End If
- On Error GoTo err
- MP3_Play sFilename, "MyAlias"
- Label1.Caption = sFilename
- err:
- End Sub
- Private Sub Form_Unload(Cancel As Integer)
- MP3_Stop "MyAlias"
- End Sub
sowie
Visual Basic-Quellcode
- ' Modul MP3-Play and Stop via API
- Option Explicit
- ' zunächst die benötigte API-Deklaration
- Private Declare Function mciSendString Lib "winmm.dll" _
- Alias "mciSendStringA" (ByVal lpszCommand As String, _
- ByVal lpszReturnString As String, _
- ByVal cchReturnLength As Long, _
- ByVal hwndCallback As Long) As Long
- Private Declare Function GetShortPathName Lib "kernel32" _
- Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
- ByVal lpszShortPath As String, _
- ByVal cchBuffer As Long) As Long
- ' MP3-Datei abspielen
- Public Function MP3_Play(ByVal sFile As String, _
- ByVal sAlias As String) As Boolean
- Dim bResult As Boolean
- ' Dateinamen in DOS 8.3 Format, da z.B. Sonderzeichen
- ' wie Leerzeichen Probleme machen
- Dim sBuffer As String
- Dim lResult As Long
- sBuffer = Space$(255)
- lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))
- If lResult <> 0 Then
- sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
- ' MCI öffnen
- lResult = mciSendString("open " & sFile & _
- " type MPEGVideo alias " & sAlias, 0, 0, 0)
- If lResult = 0 Then
- ' MP3 abspielen
- If mciSendString("play " & sAlias & _
- " from 0", 0, 0, 0) = 0 Then
- bResult = True
- End If
- End If
- End If
- MP3_Play = bResult
- End Function
- ' Wiedergabe stoppen und MCI schließen
- Public Sub MP3_Stop(ByVal sAlias As String)
- mciSendString "stop " & sAlias, 0, 0, 0
- mciSendString "close " & sAlias, 0, 0, 0
- End Sub