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

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

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


person Mohit    schedule 19.11.2008    source источник


Ответы (6)


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

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

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

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

person franc0is    schedule 11.06.2012
comment
Это правильный ответ. Раньше я пробовал это без системного ключа, который не работает. Но да, этот работает как на Win8, так и на Win7. Я вставил содержимое файла .reg в новый ответ для удобства всех заинтересованных сторон. - person Brent Faust; 11.02.2013
comment
Вы можете узнать больше об этом и загрузить файл reg, готовый к импорту, отсюда: howtogeek.com/howto/windows-vista/ - person Brad Parks; 09.08.2013
comment
У меня очень новенький вопрос. Следует ли мне сохранить вашу информацию [HKEY -...] в файле с суффиксом .reg, а затем выполнить его? - person Zen; 12.10.2014
comment
Этот ответ спасет мне жизнь. - person Zen; 13.10.2014
comment
Разве это не полностью отключает блокировку рабочей станции? - person Kyle Strand; 16.01.2015
comment
Имейте в виду, что это не просто отключает win+l, а блокировку целиком. Это отключит блокировку Start > Shutdown, блокировку при возобновлении / пробуждении и т. Д. - person dhulihan; 07.07.2015

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);
}

Обратите внимание, что вам понадобится низкоуровневая клавиатурная ловушка. нормальный обработчик клавиатуры (WH_KEYBOARD) не будет перехватывать события горячих клавиш.

person efotinis    schedule 25.11.2008
comment
@elmarco, да, в XP работает. Может быть, Vista / 7 стала более строгой в отношении переопределения системных горячих клавиш? Кроме того, убедитесь, что ваша DLL 64-битная, если вы пытаетесь это сделать в 64-битной ОС. - person efotinis; 23.05.2013
comment
мое приложение 64-битное в 64-битной системе. Он отлично блокирует другие ключи, но не win + l - person elmarco; 24.05.2013
comment
Ты прав. Я только что протестировал его на Win7 x64, и кажется, что Win + L обрабатывается специально (возвращение отличного от 0 из хука не блокирует экран блокировки). Если честно, я не виню их за это. Итак, похоже, что предложение FrancoisB об отключении блокировки с помощью политики - правильный способ сделать это в Win7 + (и, возможно, в Vista тоже). - person efotinis; 25.05.2013

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

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

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

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

    • In DisableLockWorkstation.reg:

       Windows Registry Editor Version 5.00
       [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
       "DisableLockWorkstation"=dword:00000001
      
    • In 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.
  • The shortcut should now be pinnable to the taskbar (this is not true prior to manually changing the target); it can be dragged there as normal.
    • (Note that you may also want to change the icon to something like a padlock before pinning the shortcut to the taskbar.)

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

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

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

ярлык lock.bat на панели задач


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

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

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

    введите описание изображения здесь

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

    "C:\Users\ [user_name]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ [custom_folder]\"
    
person Kyle Strand    schedule 16.01.2015
comment
Это правильный ответ. Он показывает, как можно отключить встроенную горячую клавишу и как создать свою, назначив ее для ярлыка файла. Точно так же, как добавить одну вещь: чтобы иметь возможность запускать новую горячую клавишу, вам нужен ярлык в какой-то системной доступной папке. Я думаю, что это должно быть в папке, которая находится в переменных системного окружения, такие папки - это библиотеки. - person lub094; 25.10.2015
comment
@ lub094 Спасибо! Я добавил эту информацию к ответу. - person Kyle Strand; 26.10.2015
comment
Также для настоящих горячих клавиш вы можете использовать встроенную функцию Windows, например: i.imgur.com/T4KYX9k .png? 1 - person lub094; 28.10.2015
comment
@ lub094 О, это выглядит очень удобно. Это новое в Windows 8 или 10 или доступно в 7? - person Kyle Strand; 28.10.2015
comment
Он также доступен в Windows 7. - person lub094; 29.10.2015
comment
Хорошо, я попытался назначить Ctrl-Alt-L своему ярлыку-to-lock.bat, как в вашем примере, но эта комбинация клавиш, похоже, на самом деле ничего не делает, даже когда у меня есть ярлык, прикрепленный к панель задач. Есть идеи, что мне может не хватать? - person Kyle Strand; 29.10.2015
comment
Чтобы он заработал, мне пришлось поместить ярлык в папку меню «Пуск» C: \ Users \ [имя_пользователя] \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ [custom_folder] \: i.imgur.com/3bro1Pi.png. Если он не начинает работать сразу, я обнаружил, что изменение комбинации горячих клавиш пару раз исправляет это. - person lub094; 30.10.2015
comment
@ lub094 Спасибо. Когда у меня появится свободное время, я проверю это и напишу свой ответ соответствующим образом. - person Kyle Strand; 02.11.2015
comment
@ lub094 Прошло полтора года с тех пор, как вы внесли свое предложение, и у меня не было причин снова отключать стандартный ярлык Win-L, поэтому я пошел дальше и добавил ваш вклад в ответ, хотя я не тестировал. Еще раз спасибо! - person Kyle Strand; 16.03.2017
comment
Стоит отметить, что любому, кому нужно создать файл .reg, необходимо отключить параметр «Скрывать расширения для известных типов файлов» в настройках проводника. - person Shadoninja; 28.04.2017
comment
@Shadoninja Спасибо! - person Kyle Strand; 28.04.2017

Похоже, ты не можешь.

Вы можете отключить все встроенные горячие клавиши 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. В дереве проводника снимите флажок «Горячие клавиши с активированным Windows + X». Hoekey также может работать, не пробовал. Источник.

person ine    schedule 19.11.2008
comment
Это связано с тем, что это регистрируется Winlogon, а не Explorer, так что это неправильный раздел для поиска настроек. Перехватчик может использоваться для имитации функциональности зарегистрированных горячих клавиш (как указано в этом разделе и в других местах). - person 0xC0000022L; 08.03.2011
comment
Почему Win + U? Почему Microsoft принудительно применяет специальные возможности, если они не используются? :рулон: - person Synetech; 21.03.2011

Метод @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
    
person Brent Faust    schedule 11.02.2013

Используйте Power Toys для Windows 10. Здесь у вас есть возможность переназначить ярлыки .. скачать силовые игрушки

person kumarahul    schedule 18.06.2020
comment
по крайней мере, в моем случае я получаю сообщение об ошибке, что я не могу сопоставить / для Win L - person LeoR; 20.07.2021