重新分配/覆盖热键(Win + L)以锁定窗口

Moh*_*hit 24 windows locking keyboard-shortcuts energy monitor

是否可以将Win + L热键重新分配给另一个可执行文件/快捷方式?

使用案例 - 我想在我的笔记本电脑锁定后立即关闭它.我知道一个可以锁定和关闭监视器的可执行文件,但我不想改变系统锁定的方式(通过显式或通过其他快捷方式运行程序).如果可以将Win + L分配给此可执行文件,那将是最好的.

小智 22

您需要设置以下注册表项以完全禁用Windows锁定功能:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] "DisableLockWorkstation"=dword:00000001
Run Code Online (Sandbox Code Playgroud)

然后重新启动计算机.

这适用于Win7,Win8和Win10

  • 您可以从此处了解更多信息,并下载准备导入的“ reg”文件:http://www.howtogeek.com/howto/windows-vista/disableenable-lock-workstation-functionality-windows-l/ (2认同)
  • 这不是完全禁用锁定工作站吗? (2认同)

efo*_*nis 12

Win + L是系统分配的热键,没有禁用它的选项.这意味着应用程序无法检测它,除非您使用低级全局键盘钩子(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);
}
Run Code Online (Sandbox Code Playgroud)

请注意,您需要一个低级键盘钩子.一个正常的键盘钩子(WH_KEYBOARD)不会赶上热键事件.

  • 你是对的。我刚刚在 Win7 x64 上对其进行了测试,似乎对 Win+L 进行了特殊处理(从钩子返回非 0 不会阻止锁定屏幕)。老实说,我不怪他们这样做。因此,似乎 FrancoisB 通过策略禁用锁定的建议是在 Win7+(也许还有 Vista)中执行此操作的正确方法。 (2认同)

Kyl*_*and 11

基于注册表的解决方案本身完全禁用锁定系统(甚至通过Start菜单).

这是一种实际上提供了一种在没有DisableLockWorkstation.reg和弦的情况下锁定计算机的方法.锁定可以通过任务栏上的快捷方式完成,也可以按顺序按下它们EnableLockWorkstation.reg.

首先,创建一个批处理文件,可以切换系统锁定并触发锁定本身; 这样做的说明来自论坛帖子:

  • 创建用于打开或关闭系统锁定的注册编辑文件.这与Brent Foust的答案相同.

    • .reg:

       Windows Registry Editor Version 5.00
       [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
       "DisableLockWorkstation"=dword:00000001
      
      Run Code Online (Sandbox Code Playgroud)
    • cmd.exe /C "<path>\lock.bat":

        Windows Registry Editor Version 5.00
      
        [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
        "DisableLockWorkstation"=-
      
      Run Code Online (Sandbox Code Playgroud)
  • 运行 reg-edit脚本以禁用系统锁定.

  • 创建批处理文件以使用<path>文件切换功能:

    regedit /S EnableLockWorkstation.reg
    rundll32.exe user32.dll,LockWorkStation
    regedit /S DisableLockWorkstation.reg
    
    Run Code Online (Sandbox Code Playgroud)

现在,您可以创建一个快捷方式并将其固定到任务栏:

  • 右键单击批处理文件并创建快捷方式.
  • 右键单击新快捷方式,编辑快捷方式属性,然后将目标更改为lock.bat,其中lock.batStart文件的完整路径.
  • 现在,快捷方式应该可以固定到任务栏(在手动更改目标之前不是这样); 它可以像往常一样拖到那里.
    • (请注意,您可能还需要将快捷方式固定到任务栏之前将图标更改为类似挂锁的内容.)

正如上面提到的,一旦你完成了上述步骤,你应该能够锁定使用计算机DisableLockWorkstation.reg,EnableLockWorkstation.reg,.reg在序列(为和弦-虽然见下文使用的解决方案cmd.exe /C "<path>\lock.bat"- <path>- lock.bat为和弦).这是因为该序列解释如下:*lock.bat- 调出"开始"菜单,尽管您实际上不需要等待它加载*Start- 搜索自定义锁定脚本; 在我的机器上,如果它是我的任务栏上唯一的快捷方式,则DisableLockWorkstation.reg快捷方式始终是第一个EnableLockWorkstation.reg结果.(在尝试以这种方式锁定计算机之前验证这一点!)*.regcmd.exe /C "<path>\lock.bat" - 一旦搜索找到一个项目,它将被启动 - 即将调用该快捷方式,并且您的计算机将锁定.你不会需要等待搜索到负载; 您可以快速按<path>,lock.bat,lock.bat顺序走开.屏幕不会立即锁定,但应在几秒钟内锁定.

下面是我制作的任务栏快捷方式的图片(使用此图标):

在此输入图像描述


编辑:使用和弦,如Start- DisableLockWorkstation.reg-EnableLockWorkstation.reg

在下面的评论,用户lub094方式暗示分配的快捷方式 .reg - - cmd.exe /C "<path>\lock.bat"(<path>或您想任何快捷方式).我没有花时间测试这个,因为我重新启用了系统快捷方式,但我认为它有效.

  • 使用内置快捷键创建功能分配和弦:

在此输入图像描述


ine*_*ine 3

看来你不能。

您可以通过对注册表进行以下更改来禁用除Win+L 和 Win+U 之外的所有内置 Windows 热键(这应该适用于所有操作系统,但可能需要重新启动):

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也可能有用,还没试过。来源