Visual Basic 2010 Express Musik einfügen

12/23/2011 18:15 empiremen#1
Hallo

Ich möchte in mein VB 2010 Express Programm nun auch mal Musik hinzufügen.

Sobald Form5 gezeigt wird soll die Musik abgespielt werden. Ich weiß bereits das es als .wav format gespeichert sein muss habe ich erledigt.
So nun der schwierigere teil....
Ich möchte das Programm verschicken. Was bedeutet das der Titel in der Anwendung gespeichert sein muss und dann abgespielt werden soll. in VB 2008 funktioniert das soweit ich weiß mit irgendeiner Let's Dance anwendung (Weiß ich nicht genau) Da ich 2010 aber besser finde suche ich nun dafür eine Lösung.

Mfg
12/23/2011 18:45 Kraizy​#2
Pack die Datei doch einfach in den selben Ordner, bzw in einen Unterordner..
12/23/2011 19:15 empiremen#3
Ich adde dich mal in Skype wäre cool wenn dus mir erklären könntest
12/23/2011 22:40 Diablo_#4
Quote:
Originally Posted by empiremen View Post
Ich adde dich mal in Skype wäre cool wenn dus mir erklären könntest
Wenn du noch Hilfe brauchst, ich kann dir das zeigen.
12/23/2011 22:43 empiremen#5
Ja bitte!
12/23/2011 23:06 Diablo_#6
Code:
Private Declare Function sndPlaySound Lib "winmm.dll" _
  Alias "sndPlaySoundA" ( _
  ByVal lpszSoundName As String, _
  ByVal uFlags As Integer) As Integer

    Private Const SND_ASYNC As Integer = &H1
    Private Const SND_LOOP As Integer = &H8
    Private Const SND_SYN As Integer = &H0
Das ist die kleine Funktion, damit du die überhaupt abspielen kannst, dir stehen 3 Abspieltypen zur Auswahl. Für einen Timer habe ich LOOP benutzt, damit es sich immer wieder wiederholt.

Die Funktion einfach irgendwo hinpacken, ich mache es meistens weit oben.

Zum Abspielen dann das:

Code:
sndPlaySound("Dateipfad", SND_ASYNC Or SND_LOOP)
Das musst du dann unter Form5_Load packen, weil du es ja abgespielt haben willst, wenn die Form aufgerufen wird.

"Dateipfad" musst du dort eingeben oder du legst diesen erst fest über eine Textbox. Dann würde ich das mit einem OpenFileDialog machen:

Code:
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        OpenFileDialog1.ShowDialog()

        TextBox1.Text = OpenFileDialog1.FileName

    End Sub
Dateipfad = Textbox1.Text:

Code:
sndPlaySound(TextBox1.Text, SND_ASYNC Or SND_LOOP)
Natürlich muss der Sound auch irgendwann gestoppt werden. Ohne es jetzt zu testen würde ich mal sagen, er hört auf wenn du die Form5 schließt aber wie gesagt, getestet habe ich es nicht.

Ansonsten:

Code:
sndPlaySound(0, SND_ASYNC)
Kannste auch unter einen Button packen.

Das dürfte dir weiterhelfen.

Grüße
12/23/2011 23:11 empiremen#7
Ok also muss ich das alles nur (die erste funktion/en) einfach in mein Form5 load teil reinschmeißen? Wo gebe ich dann an welchen sound er abspielen soll? Wäre es vill möglich das ich dir das teil schicke inklusive des sounds und du mir das für etwas egold dann da rein packst? :)


Hab das mal nun alles in eine neue einzelne form gepackt und den pfad angegeben. Wenn ich nun aber Debugge kommt immer nur :

*Tut*
*tut*

also dieser klassische windows piepser.. :)
12/23/2011 23:27 Diablo_#8
Quote:
Originally Posted by empiremen View Post
Ok also muss ich das alles nur (die erste funktion/en) einfach in mein Form5 load teil reinschmeißen? Wo gebe ich dann an welchen sound er abspielen soll? Wäre es vill möglich das ich dir das teil schicke inklusive des sounds und du mir das für etwas egold dann da rein packst? :)


Hab das mal nun alles in eine neue einzelne form gepackt und den pfad angegeben. Wenn ich nun aber Debugge kommt immer nur :

*Tut*
*tut*

also dieser klassische windows piepser.. :)
Brauchst mir kein E*Gold geben. Wir machen das einfach mit Ressourcen, das ist einfacher.

Code:
Imports System.Media.SoundPlayer
Imports System.IO

Public Class Form1

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

    Private Const SND_ASYNC As Integer = &H1
    Private Const SND_LOOP As Integer = &H8
    Private Const SND_SYN As Integer = &H0

    Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

sndPlaySound(My.Resources.wavedatei, SND_ASYNC Or SND_LOOP)

  End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        sndPlaySound(0, SND_ASYNC)

    End Sub
End Class
Du löschst alles was bei dir in Form5 steht und kopierst das bei dir rein. Wir müssen aber noch die Resource hinzufügen.

Rechts siehst du einen kleinen Bereich, wo deine Forms unter anderem aufgelistet sind. Oben steht "My Project", da machst du einen Doppelklick drauf und dann links auf "Ressourcen", oben "Ressource hinzufügen" => "Vorhandene Datei hinzufügen" und deine .wav Datei auswählen.

Code:
sndPlaySound(My.Resources.[B]NameDerDateiOhneDieDateiEndung[/B], SND_ASYNC Or SND_LOOP)

Fertig. Button1 musst du aber noch einfügen auf deine Form5.
12/23/2011 23:34 empiremen#9
Vielen Vielen Dank erstmal.

So problem :D

sndPlaySound(My.Resources.Klingelton, SND_ASYNC Or SND_LOOP) mit dieser Zeile stimmt etwas nicht Fehler:
Der Wert vom Typ "System.IO.unmanagedMemoryStream" kann nicht in "String" konvertiert werden.

Mfg
12/23/2011 23:52 Diablo_#10
Ah, jo, habe ich falsch gemacht. Man könnte das auch anders machen, allerdings braucht man dafür spezielle .wav Dateien, PCM-Wavedateien.

Ob deine Wavdatei das ist, weiß ich nicht.

Wir machen das anders.

Code:
Imports System.Media.SoundPlayer
Imports System.IO

Public Class Form1

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

    Private Const SND_ASYNC As Integer = &H1
    Private Const SND_LOOP As Integer = &H8
    Private Const SND_SYN As Integer = &H0

    Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

sndPlaySound(Label1.Text, SND_ASYNC Or SND_LOOP)

  End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        sndPlaySound(0, SND_ASYNC)

    End Sub
End Class
Adde ein Label auf deine Form und der Text von dem Label ist der Dateipfad von deiner Wavdatei. In den Eigenschaften des Labels stellst du "Visible" auf "False".

Grüße
12/23/2011 23:59 empiremen#11
So leid es mir tut aber es kommt immer noch nur der Windows Piepser.
Könnte man nicht vill einfach so sagen.
In sätzen:

Wenn Form5 geöffnet wird Dann Starte die Klingelton.wav die sich in dem mitgelieferten Archiev befindet im Windows media Player.

? Das wäre einfacher und würde das selbe ergebniss erbringen?
Mann müsste dann eben nur die Exe und das lied(versteckt) in ein Archiev packen und es dann von dort ausführen lassen?

Ginge soetwas nicht auch?
12/24/2011 00:04 Diablo_#12
Dann hast du den Pfad falsch angegeben.

Wenn deine Datei auf dem Desktop liegt, muss das so aussehen:

C:\Users\Public\Desktop\DeineDatei.wav

Hinter den Pfad musst du ein Backslash und die Datei schreiben.

\DeineDatei.wav
12/24/2011 00:08 MoepMeep#13
Ich bitte dich, dazu gibt es tausende Beispiele im Internet.
[Only registered and activated users can see links. Click Here To Register...]
12/24/2011 00:10 empiremen#14
Vielen dank an Diablo_ Funktioniert :) MoepMeep reportet wegen spam...
12/24/2011 00:26 Diablo_#15
Keine Ursache. Wenn du weitere Probleme/Fragen hast, kannst du sie mir auch per PN schicken.