在Windows XP/7中如何禁用屏幕键盘声音的C#方法

5
我有一个在Windows xp/7上运行的C#应用程序,在其中使用了屏幕键盘。
当启用声音时,会出现延迟导致问题。我想禁用声音。
如何通过我的C#应用程序代码禁用声音?有什么想法吗?

这不是离题,因为OP要求提供编程解决方案。只需要进行一些研究就能找到正确的解决方案。 - Steve
那是用户设置 - 你的应用程序不应该乱动它。你能详细说明它给你带来了什么问题吗?我们应该寻求一个解决方案,可以修复你的应用程序中的问题,而不会影响用户整个系统(就像Yakup Ünyılmaz的答案所示)。 - Damien_The_Unbeliever
3个回答

4
您可以从注册表中禁用它。
[HKEY_CURRENT_USER\Software\Microsoft\Osk] 
"ClickSound"=dword:00000001 // Related Registry Key 

您可以使用以下代码来更改它。
RegistryKey key = Registry.CurrentUser; //key gets the value = "HKEY_CURRENT_USER"
RegistryKey oskKey = key.CreateSubKey(@"Software\Microsoft\Osk");// This line opens the "HKEY_CURRENT_USER\Software\Microsoft\Osk" 
oskKey.SetValue("ClickSound", 0); // Set the value of ClickSound to 0(disable) which is 1(enabled) by default.

我还没有测试过,但你可能需要在此之后重新启动 osk.exe。


Yakup,你能再详细解释一下吗? - Ami DATA
1
我猜你正在使用如下代码启动屏幕键盘:Process.Start("osk.exe"); 如果你想在打开它之前禁用屏幕键盘的声音,请在启动屏幕键盘之前使用我提供的代码。但如果你已经打开了它,你必须重新启动屏幕键盘。使用以下代码来关闭它:Process [] proc Process.GetProcessesByName("osk"); proc[0].Kill(); 然后再次启动它。 - Yakup Ünyılmaz
3
尽管这是对您的回答,但请试着寻找替代解决方案,改变用户配置设置是一个非常愚蠢的想法。 - BenjaminPaul
BenjaminPaul,我的应用程序必须适应我的需求...(根据客户要求,不管怎样该应用程序都会阻止对PC的访问)。 - Ami DATA
1
@AmiDATA - 如果应用程序对计算机具有独占访问权限(就像该计算机的管理员会认可该访问权限一样),那么管理员应该自己配置计算机以删除此访问权限(通过组策略、构建过程或成像)。否则,不,您的应用程序没有独占访问权限,不应更改用户设置。 - Damien_The_Unbeliever

0

你只需要在任务栏中点击音量图标,然后点击混音器并调整“屏幕键盘”的滑块或点击扬声器将其静音。它必须在运行状态下才能显示在混音器窗口中。

兄弟,这会影响到我们不想要的其他媒体声音,

你可以从注册表中禁用它

[HKEY_CURRENT_USER\Software\Microsoft\Osk] "ClickSound"=dword:00000001 // 相关的注册表键 你可以使用此代码进行更改

RegistryKey key = Registry.CurrentUser; //key gets the value = "HKEY_CURRENT_USER" RegistryKey oskKey = key.CreateSubKey(@"Software\Microsoft\Osk");// 此行打开“HKEY_CURRENT_USER\Software\Microsoft\Osk” oskKey.SetValue("ClickSound", 0); // 将ClickSound的值设置为0(默认情况下为1)以禁用它。 我还没有测试过,但在此之后可能需要重新启动osk.exe。

这对我非常有效,非常感谢你,兄弟。


0
你所要做的就是在任务栏中点击音量图标,然后点击混音器并调整“屏幕键盘”的滑块或者点击扬声器将其静音。它必须在运行状态下才能在混音器窗口中显示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接