Повторно назначить/переопределить горячую клавишу (Win + L) для блокировки окон

Можно ли повторно назначить горячую клавишу Win + L другому исполняемому файлу/ярлыку?

Вариант использования - я хотел бы выключить монитор моего ноутбука, как только он заблокирован. Мне известен исполняемый файл, который может блокировать и выключать монитор, но я не хочу менять способ блокировки системы (запустив программу явно или с помощью какого-либо другого ярлыка). Было бы лучше, если бы Win + L можно было назначить этому исполняемому файлу.

Ответ 1

Вам необходимо установить следующий раздел реестра, чтобы полностью отключить функцию блокировки Windows:

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

И перезагрузите компьютер.

Это работает на Win7, Win8 и Win10

Ответ 2

Win + L - это назначенная системой горячая клавиша, и ее нельзя отключить. Это означает, что приложение не WH_KEYBOARD_LL обнаружить его, если только вы не используете низкоуровневый глобальный хук клавиатуры (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) не будет перехватывать события горячих клавиш.

Ответ 3

Решение на основе реестра само по себе полностью отключает блокировку системы (даже через меню " Start).

Вот метод, который фактически обеспечивает способ блокировки компьютера без аккорда Win - L. Блокировка может быть выполнена либо с помощью ярлыка на панели задач, либо последовательно нажав их, после чего следует Enter.

Сначала создайте командный файл, который может включить блокировку системы и вызвать саму блокировку; инструкции для этого взяты из сообщения на форуме:

  • Создайте файлы reg-edit для включения или выключения блокировки системы. Это так же, как в ответе Брента Фауста.

    • В 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
    

Теперь вы можете создать ярлык и закрепить его на панели задач:

  • Щелкните правой кнопкой мыши на командном файле и создайте ярлык.
  • Щелкните правой кнопкой мыши новый ярлык, измените свойства ярлыка и измените цель на cmd.exe/C "<path>\lock.bat", где <path> - это полный путь к файлу lock.bat.
  • Теперь ярлык должен быть прикреплен к панели задач (это не так до изменения цели вручную); его можно перетащить туда, как обычно.
    • (Обратите внимание, что вы также можете изменить значок на что-то вроде замка перед тем, как прикрепить ярлык к панели задач.)

Как упомянуто выше, после того, как вы выполнили вышеуказанную процедуру, вы сможете заблокировать компьютер, используя Win, L, Enter последовательно (не как аккорд - хотя см. Ниже решение для использования [ TG26] - Alt - L как аккорд). Это потому, что эта последовательность интерпретируется следующим образом:

  • Win - вызывает меню "Пуск", хотя вам не нужно ждать, пока оно загрузится
  • L - ищет собственный скрипт блокировки; на моей машине ярлык lock.bat всегда был первым результатом L, если это был единственный ярлык на моей панели задач, начинающийся с L. (Проверьте это, прежде чем пытаться заблокировать компьютер таким образом!)
  • Enter - как только поиск найдет элемент, он будет запущен - т.е. будет вызван ярлык, и ваш компьютер заблокируется. Вам не нужно ждать загрузки поиска; Вы можете быстро последовательно нажать Win, L, Enter и уйти. Экран не будет заблокирован сразу, но он должен заблокироваться в течение нескольких секунд.

Ниже приведено изображение ярлыка панели задач, который я сделал (используя этот значок):

lock.bat taskbar shortcut


РЕДАКТИРОВАТЬ: Использование аккорда, например, Ctrl - Alt - L

В комментариях ниже пользователь lub094 предлагает способ назначить ярлык для аккорда Ctrl - Alt - L (или любой другой ярлык, который вы хотите). Я не потратил время, чтобы проверить это, потому что я снова включил ярлык системы, но я предполагаю, что он работает.

  • Используйте встроенную функцию создания ярлыков, чтобы назначить аккорд:

    enter image description here

  • Поместите ярлык в папку "Пуск":

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

Ответ 4

Похоже, вы не можете.

Вы можете отключить все встроенные Windows горячие клавиши кроме Win + L и Win + U внесение следующего изменения в реестра (это должно работать на всех ОС но, вероятно, потребуется перезагрузка):

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer, NoWinKeys REG_DWORD 0x00000001 (1)

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

Но вы можете попробовать использовать Tweak UI. В элементе просмотра дерева Explorer снимите флажок "Включенные горячие клавиши Windows + X". Hoekey также может работать, не пробовал. Источник.

Ответ 5

Метод @FrancoisB работает для Win8 и Win7. Для автоматизации решения:

  1. Создайте текстовый файл с суффиксом .reg (например, DisableWinL.reg)

  2. Вставьте следующий контент и сохраните файл:

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
    "DisableLockWorkstation"=dword:00000001
    
  3. Откройте этот файл с помощью RegEdit (двойной щелчок должен работать), чтобы выполнить изменение.

    Этот файл можно скопировать на новый компьютер, чтобы повторить процесс. Можно создать еще один файл с именем "EnableWinL.reg", который снова активирует клавишу Win + L:

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

Ответ 6

По какой-то причине после использования ключа реестра моя система все еще может быть заблокирована, когда я нажимаю Windows + L, и у меня есть поврежденная клавиатура, которая нажимает только эту комбинацию автоматически, когда я нажимаю Alt, поэтому мне нужен другой способ предотвратить нажатие моей клавиши Alt активировать блокировку Я на Windows 10.