Hallo,
das ist ein kleiner Nachteil der WPF-Controls. Es geht einfach nicht. Du hast 2 Alternativmöglichkeiten:
- Du lässt die Datei einfach bei der Anwendung liegen und installierst diese entsprechend mit dem Setup in den gleichen Ordner wie die Anwendung. Dann kannst du einfach wieder einen relativen Uri angeben:
mp.Open(new Uri("success.wav", UriKind.Relative));
- Du entpackst die Datei in AppData o.ä., wenn nicht bereits vorhanden, und gibst dann den Pfad zur Datei an:
private void Form1_Load(object sender, EventArgs e)
{
MediaPlayer mp = new MediaPlayer();
mp.Open(new Uri(GetSuccessFilePath(), UriKind.Absolute));
mp.Play();
}
string GetSuccessFilePath()
{
string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"Hersteller\Anwendung");
if (!File.Exists(path + @"\success.wav"))//Datei auspacken, falls diese nicht existiert
{
UnmanagedMemoryStream stream = Properties.Resources.Success;//Deine Resource, hingefügt über Projekt > Eigenschaften > Resourcen
byte[] data = new byte[stream.Length];
stream.Read(data, 0, (int)stream.Length);//Daten der Datei lesen
if (!Directory.Exists(path))
Directory.CreateDirectory(path);//Ordner erstellen, falls nicht vorhanden
using (FileStream fs = new FileStream(path + @"\success.wav", FileMode.Create))
{
fs.Write(data, 0, (int)stream.Length);//Datei schreiben
fs.Flush();
fs.Close();
}
}
return path + @"\success.wav";
}
Die Datei wird unter "C:\Users\BENUTZERNAME\AppData\Roaming\Hersteller\Anwendung\success.wav"
entpackt. Hersteller und Anwendung solltest du entsprechend an dein Programm anpassen, um einen eindeutigen Pfad zu erstellen.
Hinweis: Im meinen Beispiel heißt der Sound
Success.wav, darum wurden auch die Namen entsprechend gewählt.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als
Antwort und bewertet Beiträge. Danke.