Laden...

Sound aus den Ressourcen abspielen

Erstellt von LaberLu vor 16 Jahren Letzter Beitrag vor 15 Jahren 11.940 Views
L
LaberLu Themenstarter:in
18 Beiträge seit 2008
vor 16 Jahren
Sound aus den Ressourcen abspielen

Wie kann ich eine .wav Datei aus den Ressourcen abspielen?

mit

using System.Runtime.InteropServices;

        [DllImport("winmm.dll")]
        public static extern long PlaySound(String lpszName, IntPtr hModule, Int32 dwFlags);

habe ich zwar eine Möglichkeit .wav Datein abzuspielen, aber das funktioniert nur mit lokalen Datein.

Gibt es eine Möglichkeit auch den Stream abzuspielen?

139 Beiträge seit 2006
vor 16 Jahren

Gruss Ari
Wer lesen kann ist klar im vorteil!
MSDN
Dein Feund in allen fragen

L
LaberLu Themenstarter:in
18 Beiträge seit 2008
vor 16 Jahren

wenn ich das richtig sehe brauche ich dafür aber die nbass.dll.

ich wollte darauf eingentlich verzichten und lieber alles in einer datei haben.
Sonst hätte ich die Datei ja auch nicht in den ressourcen haben wollen, sondern sie einfach in einen Unterordner gelegt.

O
17 Beiträge seit 2007
vor 16 Jahren

Pack die Datei in deine Ressorcen und spiel sie einfach mit der SoundPlayer Klasse ab.
unter System.Media

LG
Harry

L
LaberLu Themenstarter:in
18 Beiträge seit 2008
vor 16 Jahren

Wie wäre das als Codebeispiel?

Stream stream = WindowsApplication1.Properties.Resources.ResourceManager.GetStream("sound.wav");
System.Media.SoundPlayer play = new System.Media.SoundPlayer();
play.Stream = stream;
play.Play();

Es gibt kein Compilerfehler, er macht einfach nichts...

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo LaberLu,

vermutlich ist stream null. Vermutlich weil du den Ressourcennamen nicht korrekt (also vollqualifiziert) angegeben hast.

herbivore

L
LaberLu Themenstarter:in
18 Beiträge seit 2008
vor 16 Jahren

Wie müsste man ihn denn angeben? 😁

Ich arbeite das erste mal mit Ressourcen. Ich habe die Datei einfach ganz normal hinzugefügt und sie heißt sound.wav.

edit:
Du hast recht, ich habe mal ein neues Programm gemacht und es nur auf diese eine Funktion beschränkt:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Media;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SoundPlayer play = new System.Media.SoundPlayer();
            play.Stream = WindowsApplication1.Properties.Resources.ResourceManager.GetStream("sound");
            play.Play();
        }
    }
}

Der debugger sagt, dass play.stream null ist.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo LaberLu,

diese Frage kommt sehr oft. Über die Forumssuche solltest du fündig werden.

herbivore

L
LaberLu Themenstarter:in
18 Beiträge seit 2008
vor 16 Jahren

also mir hat die Forensuche nicht wirklich geholfen.
Am nähesten kam ich mit Bilder als Resource ?
aber da verstehe ich weder wie er die ressource jetzt richtig eingebunden hat, noch wie er den vollständigen Namen gesehen hat.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo LaberLu,

du musst ja nicht mehr und nicht weniger als den richtigen Namen angeben. Also den, den du bzw. wohl eher VS der Ressource gegeben hat.

herbivore

L
LaberLu Themenstarter:in
18 Beiträge seit 2008
vor 16 Jahren

also das wäre in diesem Fall ja sound.
Aber dsamit geht es ja nicht 😁

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo LaberLu,

wenn du VS verwendest, wird der Name üblicherweise qualifiziert. Schau doch bitte einfach mal in den von VS generierten Dateien nach, wie der Name lautet.

herbivore

L
LaberLu Themenstarter:in
18 Beiträge seit 2008
vor 16 Jahren

Also in der Form1.resx unter Audio ist eine datei die sound heißt und auch die eigenschaft (name) = sound hat.

Aber wenn es das ist müsste es doch eigentlich funktionieren...

C
62 Beiträge seit 2004
vor 15 Jahren

Vielleicht eine etwas späte Antwort, aber ich hatte selbiges Problem, und es ist eigentlich ganz einfach. Daher dachte ich, ich halte es hier für die Nachwelt fest:

**Die Wav-Datei kann man in seiner Anwendung einfach wie auch Bilder, Icons usw. als Resource einbinden. Dazu fügt man sie in eine Resources.resx-Datei ein. Jedes Windows-Forms-Projekt bringt so eine Datei bereits in dem Properties-Ordner mit.

Sobald die Datei da eingefügt ist, hat man ein seinem Programm einen super-einfachen Zugriff auf den Audio-Stream (sogar über Intellisense). Beispielsweise, um den SoundPlayer damit zu füttern.**

Hier der Code dazu:

System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.Stream = NameMeinerAnwendung.Properties.Resources.NameMeinerSounddatei;
player.Play();

Hinweis: Ich verwende VS 2008 sowie .NET 3.5, von daher kann ich nicht sicher sagen, ob man mit VS 2005 auch schon so komfortabel mit Resourcen umgehen kann.

Grüße