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

时间:2008-11-19 05:16:08

标签: windows locking monitor energy

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

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

6 个答案:

答案 0 :(得分:21)

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

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] "DisableLockWorkstation"=dword:00000001

然后重新启动计算机。

这适用于Win7,Win8和Win10

答案 1 :(得分:10)

Win + L是系统分配的热键,没有选项可以禁用它。这意味着应用程序无法检测到它,除非您使用low-level global keyboard hookWH_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)不会捕获热键事件。

答案 2 :(得分:8)

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

这是一种实际上提供了一种在没有win-L和弦的情况下锁定计算机的方法。锁定可以通过任务栏上的快捷方式完成,也可以按顺序按下Enter

首先,创建一个批处理文件,可以切换系统锁定并触发锁定本身;执行此操作的说明取自a forum post

  • 创建用于打开或关闭系统锁定的注册编辑文件。这与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文件创建批处理文件以切换功能:

    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文件的完整路径。
  • 现在,快捷方式应该可以固定到任务栏(在手动更改目标之前,为真);它可以像往常一样拖到那里。
    • (请注意,您可能还希望在将固定到任务栏的快捷方式之前将图标更改为挂锁之类的内容。)

如上所述,完成上述步骤后,您应该能够依次使用WinLEnter来锁定计算机(不是< / strong>作为和弦 - 虽然请参阅下面的解决方案,使用Ctl - Alt - L作为和弦)。这是因为该序列解释如下:  * Win - 显示“开始”菜单,但实际上并不需要等待它加载  * L - 搜索自定义锁定脚本;在我的计算机上,lock.bat快捷方式始终是第一个L结果,如果,它是我的任务栏上以L开头的唯一快捷方式。 (验证此,然后尝试以这种方式锁定您的计算机!)  * Enter - 一旦搜索找到一个项目,它就会被启动 - 即。将调用该快捷方式,您的计算机将锁定。你需要等待搜索加载;您可以按顺序快速按下WinLEnter并离开。屏幕不会立即锁定,但应在几秒钟内锁定。

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

enter image description here


编辑:使用和弦,例如Ctl - Alt - L

在下面的评论中,用户lub094建议一种方法将快捷方式分配给和弦 Ctl - Alt - L(或任何快捷方式) d喜欢)。我没有花时间测试这个,因为我重新启用了系统快捷方式,但我认为它有效。

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

enter image description here

  • 将快捷方式本身放在“开始菜单”文件夹中:

    "C:\Users\ [user_name]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ [custom_folder]\"
    

答案 3 :(得分:3)

看起来你不能。

  

您可以禁用所有内置Windows   热键除Win + L 和Win + U by   做出以下改变   注册表(这应适用于所有操作系统   但可能需要重新启动):

     

HKEY_CURRENT_USER \ SOFTWARE \微软\的Windows \ CurrentVersion \政策\ Explorer中   NoWinKeys REG_DWORD 0x00000001(1)

http://www.autohotkey.com/docs/misc/Override.htm

但您可以尝试使用Tweak UI。在资源管理器树视图项下,取消选中“启用Windows + X”热键。 Hoekey也可能有用,但没试过。 Source

答案 4 :(得分:3)

@FrancoisB方法适用于Win8和Win7。要自动化解决方案:

  1. 使用.reg后缀创建一个文本文件(例如,DisableWinL.reg)

  2. 粘贴以下内容并保存文件:

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] "DisableLockWorkstation"=dword:00000001

  3. 使用RegEdit打开该文件(双击应该可以)以执行更改。

  4. 可以将此文件复制到新计算机以重复此过程。另一个名为&#34; EnableWinL.reg&#34;可以创建重新启用Win + L键:     [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] "DisableLockWorkstation"=dword:00000000

答案 5 :(得分:0)

在窗户上使用电动玩具10。 那里有重新映射快捷方式的选项。 download power toys