我玩的一款游戏收到了更新,之后似乎在游戏运行时,它阻止我的 Windows 键运行(打开开始菜单)。
当游戏打开时,我的 Windows 键根本不起作用,即使游戏最小化或不是活动窗口。
我想知道是否有办法阻止这个特定程序或所有/任何程序劫持我的 Windows 键行为?
这种新行为让我非常惊讶,一开始我并没有发现这是游戏的错误,因此我尝试:
在提升的 Powershell 中运行此命令:
Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
禁用筛选键(它们已被禁用)
禁用游戏模式(已被禁用)
检查我的键盘上是否有 dip 开关或类似物,导致 Windows 键无法正常工作
我之所以确信这是游戏造成的,是因为每次打开游戏时 Windows 键都会被禁用,而关闭游戏时它又会重新开始工作。
答案1
我已经使用一个简单的 AutoHotkey 脚本伪修复了该问题:
#Requires AutoHotkey v2.0
#SingleInstance Force
LWin:: {
DllCall("DefWindowProc", "ptr", A_ScriptHwnd, "uint", 0x112, "ptr", 0xF130, "ptr", 0)
}
RWin:: {
DllCall("DefWindowProc", "ptr", A_ScriptHwnd, "uint", 0x112, "ptr", 0xF130, "ptr", 0)
}
该脚本利用了 AutoHotkey 的覆盖功能甚至是全局热键,并重新绑定左右 Windows 键来直接执行DllCall
打开开始菜单的操作。
请注意,这只是一个“快速而粗糙”的实现,目前它的工作方式是这样的Win+E
,其他热键不起作用,因为任何 Windows 键按下都会立即调出开始菜单。虽然进一步开发它以修复这些问题应该相当简单,但我只希望恢复我的 Windows 键 -> 开始菜单功能。
此实现的另一个问题是我正在使用打开 Shell 菜单,它将(可怕的)本机开始菜单替换为较旧的开始菜单。此 AutoHotkey 脚本将打开本机开始菜单,而不是 Open-Shell 菜单,对此我还没有解决方案。
但是,这个 AutoHotkey 脚本应该可以在某些程序决定禁用 Windows 键功能的所有情况下工作。它甚至可以被设定为仅在禁用 Windows 键的程序处于活动状态时覆盖 Windows 键,如果有人希望它以这种方式工作的话。
另请注意,为了使此脚本能与某些应用程序兼容,尤其是全屏或无边框的应用程序,您可能需要以管理员权限运行该脚本。