Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

winmm.dll

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 17.08.2009, 03:17    Titel: winmm.dll Antworten mit Zitat

Also, ich kann eine mp3 Datei oder wav Datei abspielen.
Ich bekomme heraus, wieviele ms Lang das Lied ist, als auch bei welcher Position ich mich befinde, wenn ich es abspiele.
Ich kann das Lied nach dem pausieren auch wieder bei der selben Stelle abspielen.
Es wird auch angezeigt, wieviel Prozent gerade schon abgespielt worden sind.

Was kann es nicht.
Es kann nicht weiter im Liede nach vorne spulen, als auch zurück spulen.
Wie geht das denn?
Ich habe es leider nicht gefunden.

Achso hier mein Quelltext:

Der Quellcode muss in die Datei MCI_Basic.bi im Ordner inc gespeichert werden.

Hier der Code:
Code:

DECLARE FUNCTION mciSendString LIB "winmm" ALIAS "mciSendStringA" (BYVAL AS STRING, BYVAL AS STRING, BYVAL AS UINTEGER, BYVAL AS INTEGER) AS UINTEGER
DECLARE FUNCTION MCI_Open (BYVAL MCI_File AS STRING, BYVAL MCI_Alias AS STRING) AS INTEGER
DECLARE FUNCTION MCI_Play (BYVAL MCI_Alias AS STRING) AS INTEGER
DECLARE FUNCTION MCI_Position (BYVAL MCI_Alias AS STRING) AS UINTEGER
DECLARE FUNCTION MCI_Length (BYVAL MCI_Alias AS STRING) AS UINTEGER
DECLARE SUB MCI_Stop(BYVAL MCI_Alias AS STRING)
DECLARE SUB MCI_Close(BYVAL MCI_Alias AS STRING)   
DECLARE SUB MCI_Pause(BYVAL MCI_Alias AS STRING)
DECLARE SUB MCI_Resume(BYVAL MCI_Alias AS STRING)   

FUNCTION MCI_Position (BYVAL MCI_Alias AS STRING) AS UINTEGER
  DIM Null_Buffer AS STRING * 255
  mciSendString "status " + MCI_Alias + " position", Null_Buffer, LEN(Null_Buffer), 0
  FUNCTION = VAL(Null_Buffer)
END FUNCTION

FUNCTION MCI_Length (BYVAL MCI_Alias AS STRING) AS UINTEGER
  DIM Null_Buffer AS STRING * 255
  mciSendString "status " + MCI_Alias +" length", Null_Buffer, LEN(Null_Buffer), 0
  FUNCTION = VAL(Null_Buffer)
END FUNCTION

FUNCTION MCI_Open (BYVAL MCI_File AS STRING, BYVAL MCI_Alias AS STRING) AS INTEGER
    DIM MCI_Type AS STRING
    MCI_Type = "MPEGVideo"
    '"MPEGVideo" 'COLOR: RGB(255, 163, 79);">MP3
    '"waveaudio" 'Wav
    FUNCTION = mciSendString ("OPEN " + MCI_File +" TYPE "+ MCI_Type +" ALIAS " + MCI_Alias, "", 0, 0)
END FUNCTION

FUNCTION MCI_Play (BYVAL MCI_Alias AS STRING) AS INTEGER
    FUNCTION = mciSendString ("play " + MCI_Alias + " from 0", "", 0, 0)
END FUNCTION

SUB MCI_Close(BYVAL MCI_Alias AS STRING)
  mciSendString "CLOSE " + MCI_Alias, "", 0, 0
END SUB

SUB MCI_Stop(BYVAL MCI_Alias AS STRING)
  mciSendString "STOP "+ MCI_Alias, "", 0, 0
END SUB

SUB MCI_Pause(BYVAL MCI_Alias AS STRING)
  mciSendString "Pause "+ MCI_Alias, "", 0, 0
END SUB

SUB MCI_RESUME(BYVAL MCI_Alias AS STRING)
  mciSendString "Resume "+ MCI_Alias, "", 0, 0
END SUB


Und so sieht mein Programm jetzt aus:
Code:

#INCLUDE "mci_basic.bi"
screenres 300,300,32
DIM MCI_File AS STRING
DIM MCI_Alias AS STRING
DIM SLength AS UINTEGER
DIM SPosition AS UINTEGER
DIM anhalten AS string
MCI_File = "c:\a.mp3"
MCI_Alias = "Music1"

MCI_Open (MCI_File,MCI_Alias)
MCI_Play (MCI_Alias)

SLength=MCI_Length(MCI_Alias)

dim laenge as long
dim i as long
laenge = SLength / 100
dim a as long
dim taste as string
DO
cls
print "Taste s -> Start"
print "Taste p -> pausieren"
print "Taste r -> resume"
'Gibt die Länge in Sekunde an:
print SLength/1000
'Tastatur einbinden
taste = inkey
'Schleife
for i = 1 to 100
if SPosition > laenge*i then
a = i
end if
next

'Wenn die Taste p gedrückt wird, Lied pausieren
if taste = "p" then
MCI_Pause (MCI_Alias)   
end if
'Wenn die Taste r gedrückt wird, Lied weiterspielen, bei der letzten Position
if taste = "r" then
MCI_Resume (MCI_Alias)     
end if
'Wenn die Taste s gedrückt wird, Lied spielen
if taste = "s" then
MCI_Play (MCI_Alias)       
end if

'Hier ausgeben, wieiviel Prozent vom Lied schon gespielt wurde
print a;"%"
'Hier die Länge des Liedes angeben
    print SLength
'Hier die aktuelle Position herausfinden
    SPosition = MCI_Position (MCI_Alias)
    print SPosition
    IF SPosition > SLength-5 THEN MCI_Play (MCI_Alias)
    SLEEP 1,1
LOOP UNTIL MULTIKEY(&h01)

MCI_Stop (MCI_Alias)
MCI_Close (MCI_Alias)


SLEEP


mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 17.08.2009, 10:26    Titel: Antworten mit Zitat

Ich musste die MC_Basic.bi ergänezen:

Code:

DECLARE FUNCTION mciSendString LIB "winmm" ALIAS "mciSendStringA" (BYVAL AS STRING, BYVAL AS STRING, BYVAL AS UINTEGER, BYVAL AS INTEGER) AS UINTEGER
DECLARE FUNCTION MCI_Open (BYVAL MCI_File AS STRING, BYVAL MCI_Alias AS STRING) AS INTEGER
DECLARE FUNCTION MCI_Play (BYVAL MCI_Alias AS STRING) AS INTEGER
DECLARE FUNCTION MCI_Playvor (BYVAL MCI_Alias AS STRING) AS INTEGER
DECLARE FUNCTION MCI_Position (BYVAL MCI_Alias AS STRING) AS UINTEGER
DECLARE FUNCTION MCI_Length (BYVAL MCI_Alias AS STRING) AS UINTEGER
DECLARE SUB MCI_Stop(BYVAL MCI_Alias AS STRING)
DECLARE SUB MCI_Close(BYVAL MCI_Alias AS STRING)   
DECLARE SUB MCI_Pause(BYVAL MCI_Alias AS STRING)
DECLARE SUB MCI_Resume(BYVAL MCI_Alias AS STRING)   

FUNCTION MCI_Position (BYVAL MCI_Alias AS STRING) AS UINTEGER
  DIM Null_Buffer AS STRING * 255
  mciSendString "status " + MCI_Alias + " position", Null_Buffer, LEN(Null_Buffer), 0
  FUNCTION = VAL(Null_Buffer)
END FUNCTION

FUNCTION MCI_Length (BYVAL MCI_Alias AS STRING) AS UINTEGER
  DIM Null_Buffer AS STRING * 255
  mciSendString "status " + MCI_Alias +" length", Null_Buffer, LEN(Null_Buffer), 0
  FUNCTION = VAL(Null_Buffer)
END FUNCTION

FUNCTION MCI_Open (BYVAL MCI_File AS STRING, BYVAL MCI_Alias AS STRING) AS INTEGER
    DIM MCI_Type AS STRING
    MCI_Type = "MPEGVideo"
    '"MPEGVideo" 'COLOR: RGB(255, 163, 79);">MP3
    '"waveaudio" 'Wav
    FUNCTION = mciSendString ("OPEN " + MCI_File +" TYPE "+ MCI_Type +" ALIAS " + MCI_Alias, "", 0, 0)
END FUNCTION

FUNCTION MCI_Play (BYVAL MCI_Alias AS STRING) AS INTEGER
    FUNCTION = mciSendString ("play " + MCI_Alias + " from 0", "", 0, 0)
END FUNCTION

SUB MCI_Close(BYVAL MCI_Alias AS STRING)
  mciSendString "CLOSE " + MCI_Alias, "", 0, 0
END SUB

SUB MCI_Stop(BYVAL MCI_Alias AS STRING)
  mciSendString "STOP "+ MCI_Alias, "", 0, 0
END SUB

SUB MCI_Pause(BYVAL MCI_Alias AS STRING)
  mciSendString "Pause "+ MCI_Alias, "", 0, 0
END SUB

SUB MCI_RESUME(BYVAL MCI_Alias AS STRING)
  mciSendString "Resume "+ MCI_Alias, "", 0, 0
END SUB

SUB MCI_zu(BYVAL MCI_Alias AS STRING)
  mciSendString "play position + 3000 "+ MCI_Alias, "", 0, 0
END SUB

FUNCTION MCI_Playvor (BYVAL MCI_Alias AS STRING) AS INTEGER
    FUNCTION = mciSendString ("play " + MCI_Alias + " from 3000", "", 0, 0)
END FUNCTION


jetzt funktioniert es lächeln

Die Funktion war Playvor
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 17.08.2009, 11:27    Titel: Antworten mit Zitat

Achso eine Frage noch, kann ich die winmm.dll auch unter dos nutzen, oder ist es nur ab win 95 vorhanden?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 17.08.2009, 12:30    Titel: Antworten mit Zitat

Andy19312 hat Folgendes geschrieben:
Achso eine Frage noch, kann ich die winmm.dll auch unter dos nutzen[...]?

Nein, die WinAPI, zu der die winmm.dll gehört, ist nur unter Windows verfügbar. zwinkern
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 17.08.2009, 19:21    Titel: Antworten mit Zitat

ok, macht nix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz