【发布时间】:2010-09-22 23:56:18
【问题描述】:
是否可以将 Win+L 热键重新分配给另一个可执行文件/快捷方式?
用例 - 我想在笔记本电脑显示器锁定后立即关闭它。我知道可以锁定和关闭显示器的可执行文件,但我不想更改系统锁定的方式(通过显式运行程序或通过其他快捷方式)。最好将 Win+L 分配给这个可执行文件。
【问题讨论】:
标签: windows locking keyboard-shortcuts monitor energy
是否可以将 Win+L 热键重新分配给另一个可执行文件/快捷方式?
用例 - 我想在笔记本电脑显示器锁定后立即关闭它。我知道可以锁定和关闭显示器的可执行文件,但我不想更改系统锁定的方式(通过显式运行程序或通过其他快捷方式)。最好将 Win+L 分配给这个可执行文件。
【问题讨论】:
标签: windows locking keyboard-shortcuts monitor energy
您需要设置以下注册表项以完全禁用 Windows 锁定功能:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] "DisableLockWorkstation"=dword:00000001
然后重启电脑。
这适用于 Win7、Win8 和 Win10
【讨论】:
Win+L 是系统分配的热键,没有禁用它的选项。这意味着应用程序无法检测到它,除非您使用low-level global keyboard hook (WH_KEYBOARD_LL)。这适用于 XP SP3;不过还没有在 Vista 中测试过:
LRESULT CALLBACK LowLevelKeyboardProc(int code, WPARAM wparam, LPARAM lparam) {
KBDLLHOOKSTRUCT& kllhs = *(KBDLLHOOKSTRUCT*)lparam;
if (code == HC_ACTION) {
// Test for an 'L' keypress with either Win key down.
if (wparam == WM_KEYDOWN && kllhs.vkCode == 'L' &&
(GetAsyncKeyState(VK_LWIN) < 0 || GetAsyncKeyState(VK_RWIN) < 0))
{
// Place some code here to do whatever you want.
// ...
// Return non-zero to halt message propagation
// and prevent the Win+L hotkey from getting activated.
return 1;
}
}
return CallNextHookEx(0, code, wparam, lparam);
}
请注意,您需要一个 低级 键盘挂钩。 普通键盘钩子 (WH_KEYBOARD) 不会捕获热键事件。
【讨论】:
基于注册表的解决方案本身完全禁用锁定系统(即使通过Start 菜单)。
这是一种方法,实际上提供了一种在没有 Win-L 和弦的情况下锁定计算机的方法。锁定可以通过任务栏上的快捷方式完成,也可以通过按顺序按它们,然后按 Enter。
首先,创建一个可以切换系统锁定并触发锁定本身的批处理文件;执行此操作的说明取自 a forum post:
创建用于打开或关闭系统锁定的 reg-edit 文件。这与 Brent Foust 的回答相同。
在DisableLockWorkstation.reg:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableLockWorkstation"=dword:00000001
在EnableLockWorkstation.reg:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableLockWorkstation"=-
运行 reg-edit 脚本以禁用系统锁定。
创建一个批处理文件以使用.reg 文件切换功能:
regedit /S EnableLockWorkstation.reg
rundll32.exe user32.dll,LockWorkStation
regedit /S DisableLockWorkstation.reg
现在,你可以create a shortcut and pin it to the taskbar:
cmd.exe /C "<path>\lock.bat",其中<path> 是lock.bat 文件的完整路径。如上所述,完成上述步骤后,您应该可以使用 Win、L、Enter锁定计算机> 按顺序(不是作为和弦——尽管请参阅下面的解决方案,使用 Ctrl-Alt-L作为和弦)。这是因为该序列被解释如下:
lock.bat 快捷方式始终是第一个 L 结果if,它是我任务栏上唯一以 L 开头的快捷方式。 (在尝试以这种方式锁定您的计算机之前,请验证!)下面是我制作的任务栏快捷方式图片(使用this icon):
在下面的 cmets 中,用户 lub094 建议了一种将快捷键分配给 chord Ctrl-Alt-L (或您想要的任何快捷方式)。我没有花时间对此进行测试,因为我已经重新启用了系统快捷方式,但我认为它可以工作。
【讨论】:
看来你不能。
您可以禁用所有内置 Windows 热键 Win+L 除外 和 Win+U by 对 注册表(这应该适用于所有操作系统 但可能需要重新启动):
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer NoWinKeys REG_DWORD 0x00000001 (1)
(http://www.autohotkey.com/docs/misc/Override.htm)
但您可以尝试使用 Tweak UI。在资源管理器树视图项下,取消选中“启用 Windows+X”热键。 Hoekey 也可能有用,没试过。 Source.
【讨论】:
@FrancoisB 方法适用于 Win8 和 Win7。自动化解决方案:
创建一个带有 .reg 后缀的文本文件(例如 DisableWinL.reg)
粘贴以下内容并保存文件:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableLockWorkstation"=dword:00000001
使用 RegEdit 打开该文件(双击应该可以)以执行更改。
可以将此文件复制到新机器以重复该过程。并且可以创建另一个名为“EnableWinL.reg”的名称来重新启用 Win+L 键:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableLockWorkstation"=dword:00000000
【讨论】:
使用适用于 Windows 10 的电动玩具。 您可以选择重新映射快捷方式.. download power toys
【讨论】: