Сочетание клавиш для ярлыка на рабочем столе открывается слишком долго.

Вопрос или проблема

Я только что узнал, что можно настроить сочетание клавиш для открытия определённого ярлыка на вашем рабочем столе. Однако, когда я это делаю, открытие занимает четыре-пять секунд, постоянно. Как я могу устранить эту задержку и сделать так, чтобы ярлык открывался мгновенно?

Для тех, кто интересуется, способ задать сочетание клавиш – это щелкнуть правой кнопкой мыши по ярлыку, выбрать свойства, перейти на вкладку “Ярлык” и установить свойство “Ярлык” выбрав поле и нажав клавишу.

Похоже, вы можете использовать только 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 может быть вызвана несколькими факторами. Давайте подробнее рассмотрим причины задержки и возможные способы их устранения.

Причины задержки

  1. Задержка при запросе окон:
    Когда в Windows вы используете сочетание клавиш для открытия ярлыка, процесс explorer выполняет запрос к всем открытым окнам, чтобы выяснить, активно ли какое-либо из них. Если одно из окон не отвечает, explorer ждет ответа, что может привести к 4-секундной задержке. Этот механизм был описан в блоге профессора Рэймонда Чена, который упоминает, что ожидание ответа от зависшего приложения может взыскивать время.

  2. Предварительная загрузка приложений (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. Для этого выполните следующие шаги:

  1. Откройте окно PowerShell с правами администратора.

  2. Введите следующую команду:

    Disable-MMAgent -ApplicationPreLaunch
  3. Перезагрузите компьютер для применения изменений.

Преимущества:

  • Уменьшение времени ожидания при использовании горячих клавиш.
  • Снижение нагрузки на систему в процессе открытия и переключения между окнами.

Заключение

Проблема с задержкой при открытии ярлыков через сочетания клавиш может быть исправлена несколькими способами: использованием AutoHotkey для более быстрого запуска приложений и отключением предварительной загрузки в SysMain. Эти решения помогут вам значительно улучшить пользовательский опыт и сделать работу с компьютером более эффективной. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...