c# 如何以编程方式禁用 Windows 8 特定功能

标签 c# windows-8 gesture

这个问题被问了很多,但我找不到工作方法/方法 - 除了第三方应用程序。
我很确定,或者至少我非常希望这个问题的解决方案确实存在。

正如标题所说,我想像每三个应用程序(SkipMetroSuite、ClassicShellMenu 或 w/e)一样禁用窗口 8 手势。

我需要它内置在我的应用程序中,因为我无法在我的应用程序专用的计算机上安装任何东西,但我的应用程序本身...

有没有办法在 C# 中做到这一点?

编辑:
我亲自询问了 Classic Shell Menu 的开发者他的程序是如何工作的,答案如下:

The principle is to inject a message hook in the thread of window with class “ApplicationManager_DesktopShellWindow”, then listen for mouse messages sent to windows with class “EdgeUiInputWndClass”, and hide those windows. When my program exists it reshows all windows that it has hidden.

他还提到我可以在这里找到解决方案: Classic Shell src

但是有一个问题,解决方案是在 C++ 中,我不知道如何将它移植到 C#,因此非常感谢你的帮助。
解决方案在 ClassicStartMenuDLL 解决方案中的 ClassicStartMenuDLL.cpp 中。

最佳答案

您要做的第一步是禁用 Metro 模式(开始屏幕图 block )。

您可以通过注册表编辑来实现这一点,您可以通过编程方式进行。

感兴趣的条目如下:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RPEnabled

你需要将它设置为0

接下来,您要禁用“热角”。这也是可以通过编程方式完成的注册表编辑。

感兴趣的条目如下:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ImmersiveShell

创建一个名为 EdgeUI 的新 key ,并在该 key 下创建以下 DWORD 条目:

  • 禁用TLcorner
  • 禁用 TRcorner(Windows 8.1+)
  • 禁用CharmsHint

将两个值都设置为 1

由于这些都是 HKCU 设置(即当前用户),因此只需简单注销即可使它们生效。

或者,您可以终止资源管理器进程,但不推荐这样做。

如果它不适合您,请先尝试使用现成的注册表文件对其进行测试,因为您可能做错了什么 -> Disable Charms & Switcher

关于c# 如何以编程方式禁用 Windows 8 特定功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20540526/

相关文章:

java - 从 Android Q 中删除手势

java - Android - GestureDetection 强制关闭应用程序

c# - 如何连接000webhost中的mysql?

c# - 如何使用 jQuery Ajax 调用从 ASP.NET Web Api 下载 CSV 文件

c++ - 桌面版和 Metro Windows 8 的通用 UI

windows-8 - 无法从主机ping本地VM

javascript - 在 Windows 8 Metro 应用程序中使用 iframe

c# - 无法从程序集“Microsoft.AspNetCore.Http,版本=3.1.0.0”中加载类型 'Microsoft.AspNetCore.Http.Internal.BufferingHelper'

c# - 找不到类型或命名空间 'var'

java - 附加到 textview 的 "Swipe Detection"出现故障