2009-11-15 20 views
11

जब भी मेरे सी # प्रोग्राम में इस्तेमाल किया गया संदेशबॉक्स ट्रिगर करता है तो मुझे अपने कंप्यूटर से बहुत परेशान बीप मिलती है। मैं सी # कोड का उपयोग कर इस बीप को कैसे अक्षम करूं?मैं सी # संदेश बॉक्स बीप को कैसे अक्षम करूं?

मैं जिस कोड का उपयोग कर रहा हूं वह बहुत आसान है।

MessageBox.show("text"); 
+0

मेरा मानना ​​है कि व्यक्तिगत संदेश बॉक्स के लिए इसे नियंत्रित करने का कोई तरीका नहीं है; यह एक विंडोज़ सेटिंग है। क्या यह सवाल superuser.com पर है? – dtb

+2

मैं पूछ रहा था कि क्या कोई सी # कोड है जिसे मैं अपने कार्यक्रम के लिए बीप को दूर करने के लिए लिख सकता हूं। मैं सिर्फ अपने सिस्टम के लिए विशिष्ट सेटिंग के लिए नहीं पूछ रहा था। मैं अपने प्रश्न को स्पष्ट करूंगा। आवश्यकता के आधार पर –

उत्तर

15

खोज रहा यह लग रहा है बीप की तरह में hardwired है किया है से पर बीप सही का निशान हटाएँ Win32 संदेश बॉक्स समारोह:

तो आपको या तो अपनी खुद की विधि लिखने या हार्डवेयर में बीप को रोकने की आवश्यकता है। पूर्व सिर्फ आपके लिए, हर किसी के लिए काम करेगा।

+4

+1 अपनी खुद की संवाद बॉक्स विधि/कक्षा लिखने के लिए +1। – TrueWill

+0

यहां उन लोगों के लिए एक और लेख है जो अपना संदेशबॉक्स प्रतिस्थापन बनाने का आग्रह करते हैं: http://www.codeproject.com/Articles/19711/Creating-A- कस्टम- संदेश- बॉक्स- भाग – RenniePet

5

यह तब तक अजीब लग रहा है जब तक आपने इसे आजमाया नहीं है। अपने कमांड प्रॉम्प्ट, प्रकार खोलें:

net stop beep 

मैं एक त्वरित गूगल किया था और 4 अन्य तरीकों से पाया:

  1. स्थानीय मशीन: अनुसूचित जाति बंद बीप & & अनुसूचित जाति config शुरू बीप = विकलांग
  2. रिमोट मशीन : sc \ remoteMachine stop beep & & sc \ remoteMachine config beep start = disabled
  3. को रीबूट की आवश्यकता है: डिवाइस प्रबंधक -> देखें -> छुपा डिवाइस दिखाएं -> गैर प्लग और प्ले -> बीप -> अक्षम
  4. उपयोग TweakUI: सामान्य> सेटिंग्स -> त्रुटियाँ

(from here)

+0

+1 शायद थोड़ा भारी हाथ। – kenny

2

इस पर निर्भर करता है कि आप संदेशबॉक्स (आइकन, आदि) का कितना लाभ उठा रहे हैं, आप हमेशा एक कस्टम संवाद कर सकते हैं। विशेष रूप से यदि यह एक साधारण संदेश है जिसे आप प्रदर्शित करना चाहते हैं, तो यह मुश्किल या समय लेने वाला नहीं होगा।

3

आपको यह तय करने के लिए अंतिम उपयोगकर्ता को छोड़ देना चाहिए कि वह क्या चाहता है। वह सिस्टम पैनलों जैसे नियंत्रण कक्ष/ध्वनि और ऑडियो डिवाइस/ध्वनि/कार्यक्रम घटनाओं में संदेशबॉक्स के लिए ध्वनि को कॉन्फ़िगर/अक्षम कर सकता है।

बीप सेवा को रोकने के लिए प्रशासनिक विशेषाधिकारों की आवश्यकता होती है, और ऐसा कुछ नहीं है जो आप आमतौर पर केवल एक आवेदन के लिए करते हैं।

यदि आप संदेश बॉक्स को प्रतिस्थापित करने के लिए एक कस्टम संवाद के लिए जाते हैं, तो कृपया सीटीएल-सी (क्लिपबोर्ड पर प्रतिलिपि संदेशबॉक्स सामग्री) को लागू करना याद रखें।

4

संदेशबॉक्स के बजाय VisualBasic MsgBox क्लास का उपयोग करने का प्रयास करें। मैं समझा नहीं सकता क्यों, लेकिन मेरे कंप्यूटर पर, विजुअलबासिक एक बीप नहीं है।

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

तो बजाय:

MessageBox.Show("text") 

कार्य करें:

MsgBox("text") 

आप के बजाय सिस्टम से MessageBox आयात करने की Microsoft.VisualBasic से MsgBox समारोह आयात करने के लिए, होगा। Windows.Forms। लेकिन यह एक समस्या नहीं होनी चाहिए; यह .NET एपीआई का हिस्सा है।

संपादित करें: ठीक है, अब मैं इसे समझा सकता हूं। ध्वनि की कमी इसलिए है क्योंकि संदेशबॉक्स का वीबी संस्करण डिफ़ॉल्ट रूप से अनिश्चित है (यानी यह सूचनात्मक नहीं है, एक प्रश्न इत्यादि) डिफ़ॉल्ट रूप से। मुझे लगता है कि VB MsgBox क्लास का उपयोग करने के लिए कोई वास्तविक आवश्यकता नहीं है - शायद यदि आप नियमित रूप से पुराना संदेशबॉक्स अनियंत्रित करते हैं, तो यह कोई आवाज नहीं उठाएगा। :)

4

यहां बताया गया है कि मैंने उस छोटी सी समस्या को कैसे हल किया।

इस सरल वर्ग को अपनी परियोजना में जोड़ें। अब यह मेरे निजी पुस्तकालय का हिस्सा है, लेकिन आप अपनी परियोजना में सीधे कक्षा में जोड़ सकते हैं

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

मैं पसंद वह दृष्टिकोण क्योंकि मुझे विंडोज़ में संशोधन करने की ज़रूरत नहीं है और मैं अपने संदेश बॉक्स के लिए इच्छित किसी भी आइकन का चयन कर सकता हूं।

आप इस सवाल का वर्ष मैं एक ही समस्या थी लेकिन एक बहुत ही सरल तरीके से इसे ठीक करने में सक्षम था होने के बावजूद धन्यवाद, अलविदा

+0

आपके दृष्टिकोण का उपयोग करने से पूरे कारण होंगे विंडो वॉल्यूम म्यूट करने के लिए, क्या होगा यदि उपयोगकर्ता संगीत सुन रहा है? वह एक सेकंड के लिए एक म्यूट होगा – advapi

1

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

MessageBoxIconNone करने के लिए सिस्टम की स्थापना करके कोई आवाज पैदा करता है। हालांकि, बॉक्स पर कोई आइकन नहीं होगा। कुछ this की तरह।

संबंधित मुद्दे