[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool MessageBeep(uint uType);
<DllImport("user32.dll")> _
Private Shared Function MessageBeep(ByVal uType As UInteger) As Boolean
End Function
beepType.SimpleBeep cannot be cast directly to an uint. You need to either:
1. assign it to a local variable and then cast it as uint, or
2. replace -1 with 0xffffffff in the enum declaration.
Just add the sample code and a using system.runtime.interopservices;
With the enum beepType you get intellisense when you type "beep." and you can then select the kind of beep you want
/// <summary>
/// Enum type that enables intellisense on the private <see cref="Beep"/> method.
/// </summary>
/// <remarks>
/// Used by the public Beep <see cref="Beep"/></remarks>
public enum beepType
{
/// <summary>
/// A simple windows beep
/// </summary>
SimpleBeep = -1,
/// <summary>
/// A standard windows OK beep
/// </summary>
OK = 0x00,
/// <summary>
/// A standard windows Question beep
/// </summary>
Question = 0x20,
/// <summary>
/// A standard windows Exclamation beep
/// </summary>
Exclamation = 0x30,
/// <summary>
/// A standard windows Asterisk beep
/// </summary>
Asterisk = 0x40,
}
[DllImport("User32.dll", ExactSpelling=true)]
private static extern bool MessageBeep(uint type);
/// <summary>
/// Method to call interop for system beep
/// </summary>
/// <remarks>Calls Windows to make computer beep</remarks>
/// <param name="type">The kind of beep you would like to hear</param>
public static void beep(beepType type)
{
MessageBeep((uint)type);
}
///////////////// ANOTHER EXAMPLE same as the above but shows all beeps.
class Class1
{
public enum beepType
{
/// <summary>
/// A simple windows beep
/// </summary>
SimpleBeep = -1,
/// <summary>
/// A standard windows OK beep
/// </summary>
OK = 0x00,
/// <summary>
/// A standard windows Question beep
/// </summary>
Question = 0x20,
/// <summary>
/// A standard windows Exclamation beep
/// </summary>
Exclamation = 0x30,
/// <summary>
/// A standard windows Asterisk beep
/// </summary>
Asterisk = 0x40,
}
[DllImport("User32.dll", ExactSpelling=true)]
private static extern bool MessageBeep(uint type);
static void Main(string[] args)
{
Class1.beep(beepType.Asterisk);
Thread.Sleep(1000);
Class1.beep(beepType.Exclamation);
Thread.Sleep(1000);
Class1.beep(beepType.OK);
Thread.Sleep(1000);
Class1.beep(beepType.Question);
Thread.Sleep(1000);
Class1.beep(beepType.SimpleBeep);
}
public static void beep(beepType type)
{
MessageBeep((uint)type);
}
}
}
Article http://msdn.microsoft.com/msdnmag/issues/03/07/NET/ ("Calling Win32 DLLs in C# with P/Invoke") gives a helpful wrapper class for MessageBeep.
Wrapper class source code: http://msdn.microsoft.com/msdnmag/issues/03/07/NET/default.aspx?fig=true#fig1
System.Console.Beep, coming in v2.0 (Whidbey) of the .NET Framework