带有外壳的开箱即用的 WinCE(5.0 和 6.0)图像似乎在每次击键时都会播放按键声音。我怎样才能关闭这个声音,同时让音频系统保持独立?(我仍然需要听到来自我的应用程序的音频。)它似乎不是我可以设置的系统声音(如窗口最小化或最大化)。我在 SystemParameters API 中看不到任何内容。任何帮助,将不胜感激。
提前致谢!
带有外壳的开箱即用的 WinCE(5.0 和 6.0)图像似乎在每次击键时都会播放按键声音。我怎样才能关闭这个声音,同时让音频系统保持独立?(我仍然需要听到来自我的应用程序的音频。)它似乎不是我可以设置的系统声音(如窗口最小化或最大化)。我在 SystemParameters API 中看不到任何内容。任何帮助,将不胜感激。
提前致谢!
我发现答案是以下的组合:( http://msdn.microsoft.com/en-us/library/aa913008.aspx ),以及一些源代码挖掘发现了未记录的“AudioUpdateFromRegistry”API。
所以这段代码可以解决问题:
using Microsoft.Win32;
namespace CEAudio
{
public enum KeyClickVolume
{
Off,
Soft,
Loud
};
public class Utility
{
[DllImport("coredll.dll")]
public static extern void AudioUpdateFromRegistry();
static readonly string KeyVolRegKey = @"HKEY_CURRENT_USER\ControlPanel\Volume";
public static KeyClickVolume KeyClickVolume
{
set
{
uint[] vals = new uint[] { 0, 1, 0x10002 };
Registry.SetValue(KeyVolRegKey, "Key", vals[(int)value], RegistryValueKind.DWord);
AudioUpdateFromRegistry();
}
get
{
switch((uint)Registry.GetValue(KeyVolRegKey, "Key", (uint)0x10002))
{
case 0: return KeyClickVolume.Off;
case 1: return KeyClickVolume.Soft;
case 0x10002:
default: return KeyClickVolume.Loud;
}
}
}
}
}
我实际上使用了这个注册表值,类似于上面的亚当: [HKEY_LOCAL_MACHINE\ControlPanel] "InputConfig"=dword:3
值“3”启用声音控制面板上的“Screen Taps”选项,然后您可以将其关闭。.
; This registry setting controls the checkboxes dsiplayed in the Sounds CPL
; under "enable clicks & taps". Set bit0 if you have a keyboard, set bit1 if
; you have a touch screen. Set bit2 if you have HW buttons (NOTE: for now
; HW buttons are mutually exclusive with the keyboard)
[HKEY_LOCAL_MACHINE\ControlPanel]
"InputConfig"=dword:2
我认为这消除了我的水龙头(使用硬件按钮),我在某个时候在一个随机论坛中找到了它......