Ecco come ho risolto questo piccolo problema.
Aggiungi questa classe semplice al tuo progetto. E 'parte della mia biblioteca personale ora, ma è possibile aggiungere la classe direttamente nel progetto
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);
}
}
}
Ora chiamare Volume.Off() prima di chiamare MessageBox e Volume.On() dopo
Volume.Off();
MessageBox.Show("\n Information \n", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
Volume.On();
preferisco questo approccio perché non devo apportare modifiche a Windows e posso selezionare le icone che voglio per i miei MessageBox.
Grazie, ciao
Credo non ci sia modo di controllare questo per le singole finestre di messaggio; è un'impostazione di Windows. Questo fa sì che questa domanda appartenga a superuser.com? – dtb
Stavo chiedendo se c'è qualche codice C# che potrei scrivere per far sparire il segnale acustico solo per il mio programma. Non stavo chiedendo un'impostazione specifica solo per il mio sistema. Chiarirò la mia domanda –