Así es como he resuelto ese pequeño problema.
Agregue esta clase simple a su proyecto. Es parte de mi biblioteca personal ahora, pero se puede añadir directamente a la clase en su proyecto
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace MyCSharpLibrary
{
public class Volume
{
[DllImport("winmm.dll")]
public static extern int waveOutGetVolume(IntPtr h, out uint dwVolume);
[DllImport("winmm.dll")]
public static extern int waveOutSetVolume(IntPtr h, uint dwVolume);
private static uint _savedVolumeLevel;
private static Boolean VolumeLevelSaved = false;
// ----------------------------------------------------------------------------
public static void On()
{
if (VolumeLevelSaved)
{
waveOutSetVolume(IntPtr.Zero, _savedVolumeLevel);
}
}
// ----------------------------------------------------------------------------
public static void Off()
{
waveOutGetVolume(IntPtr.Zero, out _savedVolumeLevel);
VolumeLevelSaved = true;
waveOutSetVolume(IntPtr.Zero, 0);
}
}
}
Ahora llamar Volume.Off() antes de llamar a MessageBox y Volume.On() después de
Volume.Off();
MessageBox.Show("\n Information \n", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
Volume.On();
prefiero ese enfoque porque no tengo que hacer modificaciones a Windows y puedo seleccionar cualquier ícono que quiera para mis MessageBoxes.
Gracias, adiós
Creo que no hay forma de controlar esto para el cuadro de mensaje individual; es una configuración de Windows. ¿Esto hace que esta pregunta pertenezca a superuser.com? – dtb
Estaba preguntando si había algún código de C# que pudiera escribir para que el pitido desapareciera solo para mi programa. No estaba pidiendo una configuración específica solo para mi sistema. Aclararé mi pregunta –