[英]How do I disable the c# message box beep?
每當觸發我的C#程序中使用的消息框時,我的計算機都會發出非常煩人的嗶嗶聲。 如何使用C#代碼禁用此蜂鳴聲。
我使用的代碼非常簡單。
MessageBox.show("text");
這就是我解決這個小問題的方法。
將這個簡單的類添加到您的項目中。 它現在是我個人圖書館的一部分,但您可以直接在項目中添加該類
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);
}
}
}
現在在調用MessageBox和Volume.On()之后調用Volume.Off()
Volume.Off();
MessageBox.Show("\n Information \n", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
Volume.On();
我更喜歡這種方法,因為我不必對Windows進行修改,我可以為MessageBoxes選擇任何我想要的圖標。
謝謝你,再見
在您嘗試之前,這聽起來很奇怪。 打開命令提示符,鍵入:
net stop beep
我做了一個快速的谷歌,並找到了4個其他方式:
嘗試使用VisualBasic MsgBox類而不是MessageBox。 我無法解釋原因,但在我的計算機上,VisualBasic不會發出嗶嗶聲。
http://msdn.microsoft.com/en-us/library/sfw6660x%28VS.85%29.aspx
所以代替:
MessageBox.Show("text")
做:
MsgBox("text")
您必須從Microsoft.VisualBasic導入MsgBox函數,而不是從System.Windows.Forms導入MessageBox。 但那應該不是問題; 它是.NET API的一部分。
編輯:好的,現在我可以解釋一下。 缺少聲音是因為默認情況下,MessageBox的VB版本未修飾(即,它不是信息,問題等)。 我假設畢竟沒有真正需要使用VB MsgBox類 - 可能如果你使常規的舊MessageBox未修飾,它也不會發出任何聲音。 :)
您應該將它留給最終用戶來決定他想要的聲音。 他可以為系統事件配置/禁用聲音,例如控制面板/聲音和音頻設備/聲音/節目事件中的消息框。
停止蜂鳴聲服務需要管理權限,而不是通常只為一個應用程序執行的操作。
如果您確實要使用自定義對話框來替換MessageBox,請記住實現CTL-C(將消息框內容復制到剪貼板)。
盡管這個問題很老,但我遇到了同樣的問題但能夠以一種非常簡單的方式解決它。
MessageBox.Show("Your text here", "Information", MessageBoxButtons.OK, MessageBoxIcon.None);
通過將MessageBoxIcon
設置為None
,系統不會產生聲音。 但是,盒子上沒有圖標。 像這樣的東西。
根據您使用MessageBox(圖標等)的程度,您可以隨時進行自定義對話。 特別是如果它是一個你想要顯示的簡單信息,這將不困難或耗時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.