我想在一个winform中无论点什么按什么都别让那难听的“当当”的系统声音出来请问有什么api可以用吗?
非常感谢。

解决方案 »

  1.   

    修改用户的设定.
    因为这个 当 当 的声音是用户在系统中设定的
    控制面板 --> 声音与音频设备 --> 声音 --> 选择为 "无声方案"或者修改用户注册表,修改完毕,他重启就是无声方案了,不过这样会被用户抱怨的
      

  2.   

    多谢楼上各位。不过我是想让一个form不要发出系统声音,不能调节windows音量的,不然有搞破坏之嫌 - -
      

  3.   

    http://www.vjsdn.com/bbs/html/090803_520.html
      

  4.   

    多谢libiguest,但是您给的不是我想要的哦。不是想设置静音啦。。只是屏蔽一个form的系统声音哦
      

  5.   

    不只是弹出框哦,很多系统声音,还比如你在textbox里按了回车键发出的等等
      

  6.   

    说实在的 我没做过这个东西,
    不过建议你看下windows api 应该在你操作的时候调用了某些api 你可以做个钩子 拦截这样的操作这仅仅是我的想法 未做过实际测试
      

  7.   

    按照下面的方法,可以实现楼主的声音控制效果。在软件运行期间,可以禁止系统发警告声,但不影响MP3、VCD发声。(1)软件开始中运行,操作注册表 禁止Windows发出的警告声
    (2)软件退出前,恢复原始键值.
    (3)附注册表相关子键: 
       HEKY—CURRENT—USER\Control Panel\Sound Beep
       值NO,表示禁止发出声音;YES,表示允许发出声音。
    (4)C#操作注册表相关类:RegistryKey  相关方法 SetValue()太晚了,自己完成代码吧
      

  8.   

    多谢楼上两位深夜相助。
    总体上来说,lzsh0622的方法感觉不是最理想,主要是我只是希望屏蔽部分form的系统声音,而不是整个软件中都不要系统声音,如果操作注册表的话太过频繁了。
    sjzlxd说的利用系统钩子拦截部分windows消息应该是个比较好的方法,就是对这些api不是很熟悉,请问具体使用哪些函数呢?
      

  9.   


    private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
     {
         //设置按Enter键和Esc键不发出Beep声音
         if (e.KeyChar == (char)Keys.Enter || e.KeyChar == (char)Keys.Escape)
         {
             e.Handled = true;
         }
     }
      

  10.   

    BitCoffee兄弟的方法是让textBox不发声音,但是还有不少其他空间是不是有比价彻底的方法,比如先[dllImport xxx.dll]  
    然后调用一下,设置下mute然后就都没系统声音了。。这样方便我比较彻底地换
      

  11.   

    api就想做?
    看看硬件编程吧DDK