JJB
Cogito ergo brumm
Tach !
Kann mir da jemand helfen ?
Ich möchte einfach ein paar Sounds während eines C# Programms wiedergeben (mehrere gleichzeitig). Sowas wie explode.wav oder beep.mp3 oder was so üblich ist bei kurzen Tonsequenzen.
Allerdings möchte ich keine 300 MB Runtime Sonstnochwas oder 2 GB SDK Ichbinganzwichtig in mein 200 KB Programm einbinden. Der spätere Anwender sollte dies nach möglichkeit einfach anklicken und ausführen, ohne dass dabei irgendeine Systemveränderung nötig wird.
Ich hab etwas gefunden, doch ich brachte es bislang in keine sinnvolle Konstellation.
Kann mir jemand sagen, wie ich am unkompliziertesten an eine Wiedergabe komme ?
Dürfen die Sound nur im Windows Ordner liegen ?
Und ist das so alle komplett oder fehlt da was ?
(und was zum Geier ist IntPtr.Zero)
Danke
Kann mir da jemand helfen ?
Ich möchte einfach ein paar Sounds während eines C# Programms wiedergeben (mehrere gleichzeitig). Sowas wie explode.wav oder beep.mp3 oder was so üblich ist bei kurzen Tonsequenzen.
Allerdings möchte ich keine 300 MB Runtime Sonstnochwas oder 2 GB SDK Ichbinganzwichtig in mein 200 KB Programm einbinden. Der spätere Anwender sollte dies nach möglichkeit einfach anklicken und ausführen, ohne dass dabei irgendeine Systemveränderung nötig wird.
Ich hab etwas gefunden, doch ich brachte es bislang in keine sinnvolle Konstellation.
Kann mir jemand sagen, wie ich am unkompliziertesten an eine Wiedergabe komme ?
Code:
using System.Runtime.InteropServices;
const string FILE_NAME = "\\Windows\\mysound.wav";
private void button1_Click(object sender, System.EventArgs e)
{
Sound.Play(FILE_NAME);
}
internal class Helpers
{
[Flags]
public enum PlaySoundFlags : int
{
SND_SYNC = 0x0000, /* play synchronously (default) */
SND_ASYNC = 0x0001, /* play asynchronously */
SND_NODEFAULT = 0x0002, /* silence (!default) if sound not found */
SND_MEMORY = 0x0004, /* pszSound points to a memory file */
SND_LOOP = 0x0008, /* loop the sound until next sndPlaySound */
SND_NOSTOP = 0x0010, /* don't stop any currently playing sound */
SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy */
SND_ALIAS = 0x00010000, /* name is a registry alias */
SND_ALIAS_ID = 0x00110000, /* alias is a predefined ID */
SND_FILENAME = 0x00020000, /* name is file name */
SND_RESOURCE = 0x00040004 /* name is resource name or atom */
}
[DllImport("coredll")]
public static extern bool PlaySound( string szSound, IntPtr hMod, PlaySoundFlags flags );
}
public class Sound
{
public static void Play( string strFileName )
{
Helpers.PlaySound( strFileName, IntPtr.Zero, Helpers.PlaySoundFlags.SND_FILENAME | Helpers.PlaySoundFlags.SND_ASYNC );
}
}
Dürfen die Sound nur im Windows Ordner liegen ?
Und ist das so alle komplett oder fehlt da was ?
(und was zum Geier ist IntPtr.Zero)
Danke