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?
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.
Pack die Datei in deine Ressorcen und spiel sie einfach mit der SoundPlayer Klasse ab.
unter System.Media
LG
Harry
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...
Hallo LaberLu,
vermutlich ist stream null. Vermutlich weil du den Ressourcennamen nicht korrekt (also vollqualifiziert) angegeben hast.
herbivore
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.
Hallo LaberLu,
diese Frage kommt sehr oft. Über die Forumssuche solltest du fündig werden.
herbivore
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.
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
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
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...
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