Вопрос или проблема
Я только что узнал, что можно настроить сочетание клавиш для открытия определённого ярлыка на вашем рабочем столе. Однако, когда я это делаю, открытие занимает четыре-пять секунд, постоянно. Как я могу устранить эту задержку и сделать так, чтобы ярлык открывался мгновенно?
Для тех, кто интересуется, способ задать сочетание клавиш – это щелкнуть правой кнопкой мыши по ярлыку, выбрать свойства, перейти на вкладку “Ярлык” и установить свойство “Ярлык” выбрав поле и нажав клавишу.
Похоже, вы можете использовать только ctrl+alt+key для открытия ярлыков, но я не считаю это проблемой.
Когда вы нажимаете сочетание клавиш, Проводник запрашивает все открытые окна, чтобы проверить, связано ли с одним из них это сочетание ярлыка (чтобы можно было переключить фокус на это окно). Поэтому, если у вас заморожено окно/программа, Проводник будет ждать ответа до истечения таймаута около 4 секунд, а затем сдаться.
Это объясняется Реймондом в этом блоге:
https://blogs.msdn.microsoft.com/oldnewthing/20120502-00/?p=7723
Извините за запоздалый ответ, но для всех, кто с этим столкнётся. Даже в Windows 11 эта проблема всё ещё сохраняется. Я рекомендую попробовать программное обеспечение AutoHotkey, которое позволяет достичь этой цели безупречно.
В основном, вам нужно будет написать свой скрипт и запустить его с помощью AutoHotkey.exe.
Создайте файл скрипта где-нибудь в файловой системе, расширение .ahk.
Ваш скрипт будет выглядеть так:
#Requires AutoHotkey v2.0
#SingleInstance FORCE
^!W:: p := "ahk_exe WINWORD.EXE", f := "C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE", WinExist(p) ? WinActivate(p) : Run(f)
^!E:: p := "ahk_exe EXCEL.EXE", f := "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE", WinExist(p) ? WinActivate(p) : Run(f)
^!D:: f := EnvGet("UserProfile") "\downloads", Run(f)
Вот что он делает: ^!W
– это горячая клавиша. Означает Ctrl+Alt+W. Вот список специальных клавиш:
# Win (клавиша с логотипом Windows)
! Alt
^ Control
+ Shift
f := and p :=
– это присвоение переменных.
и WinExist(p) ? WinActivate(p) : Run(f)
– это фактическая логика. тернарный оператор. если окно (p) существует, тогда активировать окно (p), иначе – запустить программу (f). Некоторые программы не требуют проверки активного окна, как открытие какой-то папки – это уже работает так – активировать окно, если существует, открыть новое, если нет. Некоторые программы позволяют запускать только один экземпляр самих себя, им эта проверка также не нужна, но она не повредит в любом случае.
Итак, в основном
hotkey:: p := "ahk_exe PROCESS.EXE", f := "C:\path\to\executable.EXE", WinExist(p) ? WinActivate(p) : Run(f)
иногда окно не называется так же, как исполняемый файл. поэтому иногда это может быть ahk_exe firefox
, а не ahk_exe firefox.exe
. Просто попробуйте.
Команда для запуска будет выглядеть так:
“C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe” “C:\path\to\your\script.ahk”
Вы увидите иконку программы в трее.
Просто поместите ярлык в shell:startup
или создайте задачу в планировщике Windows, чтобы запустить её при старте Windows.
Вот бонусный пример, чтобы сделать CapsLock работать как клавиша Shift, а Ctrl+Caps работать как Caps.
^CapsLock:: CapsLock
CapsLock::Shift
Одно предостережение! AutoHotkey должен запускаться от имени администратора, чтобы находить окна программ, запущенных от имени администратора.
Я понимаю, что это не отвечает на вопрос напрямую, но это отличное решение этой проблемы, которое я использую много лет. И мне это кажется гораздо более разумным, чем искать “плохие” приложения и прекращать их использовать.
p.s.: не забудьте перезагрузить скрипт, если вы редактируете его после запуска программы. щелкните правой кнопкой мыши в трее -> перезагрузить скрипт.
Отключение предварительного запуска приложений в SysMain/Superfetch решило проблему для меня. Нет необходимости отключать SysMain полностью.
Откройте окно Powershell с повышенными привилегиями и используйте следующую команду:
Disable-MMAgent -ApplicationPreLaunch
Затем перезагрузите ваш компьютер. Ярлыки рабочего стола больше не должны быть медленными.
Ответ или решение
Причины задержки при открытии ярлыков через сочетания клавиш и возможные решения
Проблема с длительной задержкой в 4-5 секунд при открытии ярлыка с помощью сочетания клавиш в Windows может быть вызвана несколькими факторами. Давайте подробнее рассмотрим причины задержки и возможные способы их устранения.
Причины задержки
-
Задержка при запросе окон:
Когда в Windows вы используете сочетание клавиш для открытия ярлыка, процессexplorer
выполняет запрос к всем открытым окнам, чтобы выяснить, активно ли какое-либо из них. Если одно из окон не отвечает,explorer
ждет ответа, что может привести к 4-секундной задержке. Этот механизм был описан в блоге профессора Рэймонда Чена, который упоминает, что ожидание ответа от зависшего приложения может взыскивать время. -
Предварительная загрузка приложений (SysMain/Superfetch):
Сервис SysMain (ранее известный как Superfetch) предназначен для оптимизации работы системы, но иногда может вызывать задержки при запуске приложений. В некоторых случаях отключение предварительной загрузки приложений может значительно повлиять на скорость запуска.
Решения проблемы
1. Использование AutoHotkey для создания быстрых комбинаций клавиш
Одним из самых эффективных способов решения проблемы с задержкой является использование программы AutoHotkey. Это программа для автоматизации, которая позволяет вам создавать свои сочетания клавиш для запуска приложений без задержки. Пример скрипта для AutoHotkey:
#Requires AutoHotkey v2.0
#SingleInstance FORCE
^!W::
p := "ahk_exe WINWORD.EXE",
f := "C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE",
WinExist(p) ? WinActivate(p) : Run(f)
^!E::
p := "ahk_exe EXCEL.EXE",
f := "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE",
WinExist(p) ? WinActivate(p) : Run(f)
^!D::
f := EnvGet("UserProfile") "\downloads", Run(f)
Объяснение скрипта:
^!W
— это горячая клавиша для открытия Word. Аналогично для Excel и папки загрузок.- Проверяется, существует ли окно приложения; если да, оно активируется, в противном случае приложение запускается.
2. Отключение предварительной загрузки приложений в SysMain
Если вы хотите улучшить производительность системы и устранить задержки, вы можете отключить предварительную загрузку приложений через SysMain. Для этого выполните следующие шаги:
-
Откройте окно PowerShell с правами администратора.
-
Введите следующую команду:
Disable-MMAgent -ApplicationPreLaunch
-
Перезагрузите компьютер для применения изменений.
Преимущества:
- Уменьшение времени ожидания при использовании горячих клавиш.
- Снижение нагрузки на систему в процессе открытия и переключения между окнами.
Заключение
Проблема с задержкой при открытии ярлыков через сочетания клавиш может быть исправлена несколькими способами: использованием AutoHotkey для более быстрого запуска приложений и отключением предварительной загрузки в SysMain. Эти решения помогут вам значительно улучшить пользовательский опыт и сделать работу с компьютером более эффективной. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.