Feedback

Beep Töne ausgeben (oldie but goldie)

Sprache: C#

Zeigt wie man die alten Beep Töne, die heute noch in Windows verwendet werden anspricht und benutzt.
//Hier die selbstgeschriebene Klasse
public class Speaker
{
    [Flags]

    //Hier die benötigte Enum mit den dazugehörigen Codes
    public enum Tones
    {
            MB_OK = 0,
            MB_ICONHAND = 0x10,
            MB_ICONQUESTION = 0x20,
            MB_ICONEXCLAMATION = 0x30,
            MB_ICONASTERISK = 0x40,
    }

    //Hier wird die benötigte DLL geladen
    [DllImport("user32.dll", EntryPoint = "MessageBeep")]

    //Die Methode für den späteren Aufruf
    public static extern bool Beep(Tones tone);

}

//Der Aufruf der Funktion 
//Achtung, diese gehört nicht mehr zur Klasse.
Speaker.BeepSpeaker.Tones.MB_ICONEXCLAMATION);
//Hier die selbstgeschriebene Klasse
public class Speaker
{
    [Flags]

    //Hier die benötigte Enum mit den dazugehörigen Codes
    public enum Tones
    {
            MB_OK = 0,
            MB_ICONHAND = 0x10,
            MB_ICONQUESTION = 0x20,
            MB_ICONEXCLAMATION = 0x30,
            MB_ICONASTERISK = 0x40,
    }

    //Hier wird die benötigte DLL geladen
    [DllImport("user32.dll", EntryPoint = "MessageBeep")]

    //Die Methode für den späteren Aufruf
    public static extern bool Beep(Tones tone);

}

//Der Aufruf der Funktion 
//Achtung, diese gehört nicht mehr zur Klasse.
Speaker.BeepSpeaker.Tones.MB_ICONEXCLAMATION);

2 Kommentare

  1. @Daniel Hafner
    Die von dir genannte Methode gibt aber nicht die Töne aus, die Windows benutzt, da diese richtige Melodien sein Können. Console.Beep entspricht der folgender WinAPI Funktion:
    http://msdn.microsoft.com/de-de/library/windows/desktop/ms679277.aspx

    @Rene Koch
    Der Beispielaufruf ist Falsch, so müsste er aussehen:
    [code]Speaker.Beep(Speaker.Tones.MB_ICONQUESTION);[/code]
    Außerdem würde ich die Methode in .NET nicht anders benennen, als in Windows. Das könnte leicht zu Verwechslungen führen, wenn jemand aus der C++-Ecke den Namen, aber nicht die Signatur betrachtet.