Problem mit DirectSound

  • VB.NET

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von MAANTECH.

    Problem mit DirectSound

    Hi,

    Ich habe ein Problem mit DirectSound. Ich verwende folgenden Code zum Auswählen, Abspielen, Pausieren und Stoppen eines Wavesounds(oder versuche es zuminest).
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports Microsoft.DirectX.DirectSound
    2. Public Class Form1
    3. Private _dev As Device
    4. Private _buffer As SecondaryBuffer
    5. Private _loop As Boolean = False
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. _dev = New Device
    8. _dev.SetCooperativeLevel(Me.Handle, CooperativeLevel.Priority)
    9. End Sub
    10. Private Sub btnSelFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelFile.Click
    11. If ofd.ShowDialog Then
    12. _buffer = New SecondaryBuffer(ofd.FileName, _dev)
    13. txtSelectedFile.Text = ofd.FileName
    14. End If
    15. End Sub
    16. Private Sub btnPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    17. If Not _buffer Is Nothing Then _buffer.Play(0, BufferPlayFlags.Default)
    18. End Sub
    19. Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    20. If Not _buffer Is Nothing Then _buffer.Stop()
    21. End Sub
    22. Private Sub btnPlay_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlay.Click
    23. If Not _buffer Is Nothing Then _buffer.Play(0, IIf(_loop, BufferPlayFlags.Looping, BufferPlayFlags.Default))
    24. End Sub
    25. Private Sub btnStop_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click
    26. If Not _buffer Is Nothing Then
    27. _buffer.Stop()
    28. _buffer.SetCurrentPosition(0)
    29. End If
    30. End Sub
    31. Private Sub btnPause_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPause.Click
    32. If Not _buffer Is Nothing Then _buffer.Stop()
    33. End Sub
    34. Private Sub chkLoop_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkLoop.CheckedChanged
    35. _loop = chkLoop.Checked
    36. End Sub
    37. End Class

    Denke die Bezeichnungen der Controls sind selbsterklärend.

    Aud DirectX und DirectSound sind verweise gesetzt und es wird nirgends etwas unterringelt. Wenn ich nun auf SelectFile Clicke dauerts kurz und dann schmeist er "BadImageFormatException; ist keine zulässige Win32-Anwendung. (Ausnahme von HRESULT: 0x800700C1)" Aus. es zeig nicht was genau in der Methode den Fehler verursacht. Die Ausnahme kommt, bevor der ofd(den ich vorher hinzugefügt habe) auftaucht.

    Hoffe ihr könnt mir helfen. Bin echt ratlos :|

    mfg MAANtech
    ich schätze mal, das hat etwas damit zu tun, dass das Fenster dann nicht mehr aktiv ist, was passiert denn, wenn du einfach ein anderes Fenster öffnest(also eine andere Anwendung), oder dieses minimierst?

    Und warum nimmst du nicht das AudioVideoPlayback?
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    sry. mein Post war für einen Post weiter drüber gedacht. DirectSOund nutze Ich, weil mir die Funktionen von AudioVideoPlayback zu wenig sind. Ich komm nicht dazu nachdem ich auf den Button geklickt habe eine andere Anwendung zu öffnen bzw diese zu minimieren :S

    du kannst dirs ja mal über TeamViewer anschauen. Hast du Skype?

    mfg MAANtech