2009-11-15 22 views
11

C# programımda kullanılan bir mesaj kutusu tetiklendiğinde bilgisayarımdan çok rahatsız edici bir bip sesi alıyorum. C# kodunu kullanarak bu bip sesini nasıl devre dışı bırakırım.C# mesaj kutusu bip sesini nasıl devre dışı bırakırım?

kullanıyorum kodu çok basittir.

MessageBox.show("text"); 
+0

Tek tek mesaj kutusu için bunu kontrol etmenin bir yolu olmadığına inanıyorum; Bu bir pencere ayarı. Bu soru süperuser.com'a ait mi? – dtb

+2

Sadece programım için bip sesini çıkartmak için yazabileceğim bir C# kodu olup olmadığını soruyordum. Sadece sistemime özgü bir ayar istemiyordum. Sorumu açıklayacağım. –

cevap

15

üzerine Bip işaretini kaldırın: and Play - -> Bip>

  • kullanım TweakUI devre dışı bırak Win32 ileti kutusu fonksiyonu:

    Bu nedenle kendi yönteminizi yazmanız veya donanımdaki bip sesini kesmeniz gerekiyor. Eski herkes için çalışır, ikincisi sadece sizin için.

  • +4

    +1. – TrueWill

    +0

    Burada kendi MessageBox değiştirme oluşturmak için dürtü hissetmek isteyenler için başka bir makale: http://www.codeproject.com/Articles/19711/Creating-A-Custom-Message-Box-Part – RenniePet

    5

    Bu, denemeden önce garip gelecektir. Komut istemi, türü açma:

    net stop beep 
    

    Ben hızlı google yaptım ve 4 diğer yollar buldular:

    1. yerel makine: sc stop bip & & sc config = engelliler
    2. uzak makineyi çalıştırmak bip : sc \ remoteMachine bip sesini durdur & & sc \ remoteMachine config beep start = devre dışı bırakılması
    3. yeniden başlatma gerektirir: Aygıt Yöneticisi -> Görünüm -> Gizli Aygıtları Göster -> Sigara Takma Genel> Ayarlar -> Hatalar Ben bip içine kablolu olduğunu benziyor yaptık arama itibaren

    (from here)

    +0

    +1 belki de ihtiyaca göre biraz ağırdır. Kendi iletişim kutusu yönteminizi/sınıfınızı yazmak için – kenny

    2

    Eğer MessageBox (simgeler, vs) her zaman özel bir iletişim kutusu yapabilirsiniz yararlanarak konum ne kadar bağlı. Özellikle görüntülemek istediğiniz basit bir mesajsa, bu zor veya zaman alıcı olmaz.

    3

    Ne istediğini sesler karar vermek son kullanıcıya bırakmak gerekir. Denetim Masası/Sesler ve Ses Aygıtları/Sesler/Program Olayları içindeki bir mesaj kutusu gibi sistem olayları için sesleri yapılandırabilir/devre dışı bırakabilir.

    bip hizmeti gerekli idari ayrıcalıkları Durdurma ve normalde sadece bir uygulama için yapardım şey değildir. Eğer MessageBox değiştirmek için özel iletişim için gitmek yaparsanız

    , CTL-C (kopya messagebox içeriği panoya) uygulamaya unutmayınız. MessageBox yerine VisualBasic MsgBox sınıfını kullanarak

    4

    deneyin. Nedenini açıklayamıyorum ama bilgisayarımda VisualBasic biri biplemiyor.

    http://msdn.microsoft.com/en-us/library/sfw6660x%28VS.85%29.aspx

    Yani yerine

    :

    MessageBox.Show("text") 
    

    yapın:

    MsgBox("text") 
    

    yerine sisteminden MessageBox ithal, Microsoft.VisualBasic gelen MsgBox fonksiyonu ithal etmek gerekecek. Windows.Forms. Ama bu bir sorun olmamalı; .NET API'sinin bir parçası.

    DÜZENLEME: Tamam, şimdi açıklayabilirim. Sesin olmaması, MessageBox'ın VB sürümünün varsayılan olarak çözülmediğinden (yani, bilgi amaçlı değil, bir soru, vb.) Kaynaklanmaktadır. Her şeyden önce VB MsgBox sınıfını kullanmak için gerçek bir gereksinim olmadığını varsayalım - muhtemelen eski eski MessageBox'ı kararsız yaparsanız, herhangi bir ses çıkarmayacaktır.

    4

    İşte bu küçük problemi nasıl çözdüm.

    Bu basit sınıfı projenize ekleyin. Artık benim kişisel kütüphanesinin parçası ama

    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); 
         } 
        } 
    } 
    

    Şimdi

    Volume.Off(); 
    MessageBox.Show("\n Information \n", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    Volume.On(); 
    

    sonra çağıran MessageBox ve Volume.On() önce Volume.Off() çağrısı tercihim

    projenizde doğrudan sınıf ekleyebilir Bu yaklaşım, Windows'da değişiklik yapmak zorunda olmadığımdan ve MessageBox'larım için istediğim simgeleri seçebildiğim için.

    ben aynı problem vardı ama çok basit bir şekilde bunu düzeltmek başardı yaşlı olmak bu soruya rağmen

    +0

    senin yaklaşımını kullanarak tüm neden olur Pencerenin sesini kapatmak için, kullanıcı müzik dinliyorsa ne olur? bir saniye için sessiz olacak – advapi

    1

    güle, teşekkür ederiz. MessageBoxIconNone sistemi ayarlayarak

    MessageBox.Show("Your text here", "Information", MessageBoxButtons.OK, MessageBoxIcon.None); 
    

    hiç ses üretir. Ancak kutuda hiç simge olmayacak. this gibi bir şey.

    İlgili konular