Sound Problem

  • VB6

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Sound Problem

    Ich hab noch ein Problem:

    Ich will einfach nur, dass beim Click auf ButtonXY ein Sound (wave-file) abgespielt wird.
    Ich hab den Sound als OLE-Objekt, der dann mit "doVerb" abgespielt werden soll.
    Aber mei mir öffnet sich immer Winamp und spielt das Ding ab oder es kommt die Fehlermeldung "Dieser Befehl kann nocht durchfeführt werden" oder es passiert gar nix. )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „“ ()

    Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

    Public Const SND_SYNC = &H0
    Public Const SND_FILENAME = &H20000

    Beispiel :

    sndPlaySound "C:\Sound.wav", SND_SYNC or SND_FILENAME

    Damit kannst du Wave dateien abspielen
    (allerdings immer nur eine zurzeit, wenn du ne andere damit abspielst wird die grade spielende angehalten udn die andere abgespielt)


    Public Const SND_SYNC = &H0
    Public Const SND_FILENAME = &H20000

    ist so nicht gültig, da macht mein VB nicht mit, aber mit Private geht es. Vielen Dank, das hat mein Programm ein ganzes Stück weitergebracht.

    Einen Nachteil gibt es allerdings: Wenn die Wave-Datei abgespielt wird, läuft das Programm solange nicht weiter. Ist manchmal ein bisschen umständlich.
    Das ist aber seltsam. Ich hab dir doch die Konstante gegeben damit es ein synchroner vorgang ist, also das die steuerung gleich wieder zurück an dein Programm gegeben wird. So wie du es beschreibst ist es aber ein Asynchroner Vorgang dafür hätts du aber die Konstante gebraucht

    Const SND_ASYNC = &H1

    Bist du sicher das du SND_FILENAME und SND_SYNC mit dem or Operator bei Flags verbunden hast ?
    Bei mirfunzt es so nämlich.

    Wenns nich geht kannst du ja noch das MCI Steuerelement das bei VB mitgeliefert wird benutzen.
    Das Programm läuft erst weiter, wenn der Sound fertig gespielt hat, nicht eher.

    Ich verstehe von solchen Sachen zwar so gut wie nix, aber es könnte entweder damit zusammenhängen, dass ich Public in Private geänder habe (weils sonst VB aufmuckt) oder daran, dass ich VB 5 habe. Ansonsten hab ich den Code kopiert.

    Wenns nich geht kannst du ja noch das MCI Steuerelement das bei VB mitgeliefert wird benutzen.


    Was für ein Ding? Wie muss ich das genau machen? (ich hab doch keine Ahnung)
    Wegen dem Private - Public Problem: Hast du die API vielleicht in einem Formular deklariert? Du solltest APIs generell besser in Modulen deklarieren, dann klappt's auch mit dem Public.

    Das MCI Steuerelement kannst du über Rechtsklick auf die Werkzeugleiste - Komponenten hinzufügen. Damit ist das abspielen von Wave Dateien sehr einfach.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Zum MCI Steuerelement :

    Das musst du über die Command eigenschaft machen.
    Hier ein Beispiel wie man ne Datei lädt und abspielt.

    MMControl1.FileName = "C:\Test.Wav"
    MMControl1.Command = "Open"
    MMControl1.Command = "Play"
    MMControl1.Command = "Stop" 'damit stoppt man ne Datei
    MMControl1.Command = "Pause" 'damit pausiert man sie
    MMControl1.Command = "Record" 'So wird direkt vom Mikrofon aufgenommen
    MMControl1.Command = "Save"
    'So wird in die Datei geschrieben die in der FileName eigenschaft angegeben ist

    Ch'Yu Chen schrieb am 30.07.2003 16:45
    Wie in Modulen deklarieren?


    So wie du ein neues Formular anlegen kannst, so kannst du auch ein neues Modul anlegen (Endung *.bas). Das ist so wie der Codebereich eines Formulars, nur eben ohne das Formular. Dort kannst du APIs auch als Public deklarieren. Wegen der Übersichtlichkeit würde ich alle APIs in einem Modul deklarieren (du kannst das z.B. modAPIs nennen). Module müssen übrigens nicht geladen oder geschlossen werden, das geschieht automatisch.



    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()