Повторно назначить/переопределить горячую клавишу (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. Для автоматизации решения:
-
Создайте текстовый файл с суффиксом .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
Ответ 6
По какой-то причине после использования ключа реестра моя система все еще может быть заблокирована, когда я нажимаю Windows + L, и у меня есть поврежденная клавиатура, которая нажимает только эту комбинацию автоматически, когда я нажимаю Alt, поэтому мне нужен другой способ предотвратить нажатие моей клавиши Alt активировать блокировку Я на Windows 10.