Надійні користувацькі клавіші швидкого доступу?


9

У мене є глобальні клавіші швидкого доступу Windows, призначені для декількох випадків cmd.exe. Я роблю це, створюючи ярлики до cmd.exe на своєму робочому столі та призначаючи кожному унікальну клавішу швидкого доступу (наприклад, CTRL + SHIFT + U). Досить базові речі. Я використовую Win2K8 (R1 і R2).

Це працює чудово ... більшість часу. Але з привабливою регулярністю іноді це не відбувається. Або це буде працювати з великою затримкою (багато секунд). Не має значення, яке саме додаток зараз зосереджено (це може бути навіть одна з командних підказок). Не має значення, які клавіші я призначаю (я спробував кілька варіантів WIN, CTRL та SHIFT). Я помітив, що це часто, але не завжди, корелює з Explor.exe, який бореться в тій чи іншій мірі (скажімо, вікно провідника відкривається для доступу до файлів, які недоступні, або додаток не відповідає, або будь-що інше). Іншими словами, обробка клавіш швидкого доступу виявляється дуже чутливою до непов'язаної системної діяльності. Зауважте, що коли у мене є ця проблема, я завжди можу успішно ALT + TAB до вікна, до якого я хочу потрапити, але це нудно.

Я використовую ярлики до цих команд Windows сотні разів на день, так що навіть 1% відмов стає дійсно дратівливим.

Чи є спосіб це виправити чи є якась стороння утиліта, яка ВІДПОВІДНО перехоплюватиме власні комбінації клавіш, щоб зосередити увагу на будь-яких додатках, які я хочу, таким чином, що не залежить від інших системних дій?

ДОДАТИ:

Є властивість ярликів Windows, яку я не хотів би втратити, якщо перейти на сторонній інструмент швидкої клавіші: ярлики Windows є ідентичними. Після того, як ви запустили ярлик до якоїсь програми, натискання клавіші комбінації клавіш швидкого переходу знову переведе вас на вже запущений процес - він не запускає новий процес.

Відповіді:


7

Використовуйте автоматичну клавішу. Мова сценаріїв нестандартна і її важко вивчити, але якщо все, що ви хочете, це надійно запускати програми, це просто. Крім того, ви можете базувати ярлики за допомогою клавіші Windows! Використовуйте наступний зразок сценарію та модифікуйте його під свої потреби. (Рядки, що починаються з ;коментарів.)

;win + alt + e ... unload ipod
#!E::
   run d:\Downloads\Apps\deveject\eject ipod.bat
   return

;win + w ... launch winamp
#w::
    run c:\program files (x86)\winamp\winamp.exe
    return

;win + a ... launch AS400
#a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private\1.ws
    return

;win + Shift a ... launch AS400 Printer
#+a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private\3.ws
    return

;win + ctrl + Shift a ... launch 2nd AS400 
#^+a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private\2.ws
    return

Збережіть це у форматі .ahk на робочому столі, встановіть автоматичну клавішу та запустіть її.

Кожен раз, коли ви натискаєте будь-яку комбінацію клавіш, AutoHotkey сканує цей сценарій. Якщо вона відповідає будь-якій з комбінацій клавіш, що передує a ::, вона виконає наступну команду. Якщо заява про повернення відсутня, AHK продовжить сканувати сценарій на відповідність після виконання вашої заяви. Комбінації клавіш описані нижче.

# = Windows Key
+ = Shift
^ = Control
! = Alt

Ви можете використовувати їх у будь-якій комбінації з літерами вашої клавіатури. Одна з комбінацій, яку я вважаю надзвичайно корисною, полягає в наступному.

; ALT Backtick ... ctrl f4
!`::
    Loop, parse, RcvCtrlW, `,
    {
     IfWinActive %A_LoopField%
     {
        sendinput ^w
        Return
     }
    }
    sendinput ^{f4}
    return

; win Backtick ... alt f4
#`::
   sendinput !{f4}
   return   

Це Alt + `і Win +`. Коли цей скрипт запущений і я натискаю alt + `, скрипт надсилає ctrl + F4. Win + `стає alt + F4.

Автоматична клавіша - це власне мова програмування. У мене створені сценарії, що імітують систему "Рокерські жести" в цілому. У мене в Gmail є такі ярлики, як ярлики. Якщо ви витратите час на засвоєння деяких його хитрощів, з ним можна отримати гайки. У Lifehacker є ціла купа корисних сценаріїв для автоматичної клавіші. Веселіться!


3
Хм - важлива особливість клавіші швидкого доступу Windows, на яку я покладаюся, - це її ідентичність. Перший раз, коли я натискаю CTRL + SHIFT + U, щоб відкрити заданий запит, він запускає cmd.exe. Наступного разу, коли я натисну комбо, якщо цей cmd.exe все ще працює, він просто виводить його на фронт, замість того, щоб запускати інший екземпляр (саме це робить команда запуску Autohotkey). Чи легко це зробити з AHK?
Пітер Беер

3

Ось як я використовую AutoHotKey таким чином, щоб відповідати вашим ідентичним вимогам.

Як приклад, я підключив Caps Lock+ aдо вікна Firefox у стеку переповнення, Caps Lock+ sдо Firefox у Super User та Caps Lock+ dдо командного рядка.

StartOrToggleMinimize(TheWindowTitle,TheAppPath)
{  
   SetTitleMatchMode, 2
   DetectHiddenWindows, Off
   IfWinActive, %TheWindowTitle%
   {
      WinMinimize, %TheWindowTitle%
   }
   else
   { 
      IfWinExist, %TheWindowTitle%
      {
         WinGet, winid, ID, %TheWindowTitle%
         DllCall("SwitchToThisWindow", "UInt", winid, "UInt", 1)
      }
      else
      {
         run %TheAppPath%
      }
   }
   return
}

; the actual hotkeys:
CapsLock & a::StartOrToggleMinimize("Stack Overflow", "c:\program files\mozilla firefox\firefox.exe -new-window stackoverflow.com")
CapsLock & s::StartOrToggleMinimize("Super User", "c:\program files\mozilla firefox\firefox.exe -new-window superuser.com")
CapsLock & d::StartOrToggleMinimize("cmd", "cmd")

Ви можете змінити режим відповідності заголовку таким же обмежуючим, як вам потрібно. Якби у мене була інша гаряча клавіша, яка збігалася з "Mozilla Firefox" (замість "Super User", наприклад), вона прокручувала б усі мої екземпляри Firefox, оскільки кожен має цей текст у заголовку вікна, і у мене він встановлений, щоб відповідати тексту де завгодно в назві.

Цей сценарій базується на цій статті в LifeHacker.


Як можна змінити цей скрипт, щоб він НЕ був ідентичним? Зокрема, мені потрібно кілька примірників програми, якщо я натискаю клавіші швидкого доступу (я запускаю шпаклівку, і мені потрібно мати можливість підключитися до 4+ серверів у будь-який момент часу, і не хочу, щоб тягнутися до миші )
Doktor J

Якщо в заголовку вікна для кожного примірника є специфічний, унікальний текст, ви можете призначити гарячі клавіші для відповідності цьому тексту. Дивіться вище Caps+aта Caps+sвище про два різних екземпляри firefox, @DoktorJ
yhw42

Але що робити, якщо я ніколи не хочу, щоб це відповідало? Коли я перемикаюся між ними, я просто ALT + TAB, тому мені не потрібні ярлики для кожного екземпляра PuTTY - мені просто потрібний ярлик, який завжди відкриває новий екземпляр PuTTY, незалежно від того, скільки вікон PuTTY у мене вже є відкрити. Це зробить просто виклик "запустити c: \ tools \ putty \ putty.exe" безпосередньо з призначеної гарячої клавіші?
Doktor J

@DoktorJ: О! Так. Саме так ви зробили б. Хоча я думаю, ви також можете призначити гарячі клавіші у властивостях швидкого доступу Windows. Я припускав, що ти маєш Caps+1на увазі конкретний екземпляр PuTTY (який, на мою думку, кращий за AltTab :)).
yhw42

3

Ще одна альтернатива запускати ваші програми швидко та інтуїтивно:

Ланч

Launchy - це безкоштовна утиліта Windows та Linux, призначена допомогти вам забути про меню "Пуск", піктограми на робочому столі та навіть про ваш файловий менеджер.

Launchy індексує програми у вашому меню «Пуск» і може запускати ваші документи, файли проектів, папки та закладки лише за допомогою декількох натискань клавіш!

alt текст


Це виглядає як пошук у меню запуску програми Win7.
Тео Белер

@Tyr: так. Я почав використовувати це в Windows XP, але продовжую робити це в Win7. Я не дуже часто використовував пошук меню «Пуск», але моє враження, що Launchy все ще швидше. Я, можливо, помиляюся на цьому.
Готьє

2

На жаль, через 6 років з Windows 10 існують ті ж самі проблеми, і з недавнього оновлення Windows 10 я виявив, що деякі ярлики / програми вже не є ідентичними ! Особливо Putty, де у мене є кілька ярликів за один і той же сеанс.

Тож я використовую AutoHotKey і змінив функцію, поділену в цій темі (на основі цієї статті в LifeHacker ), щоб він використовував файл INI для відстеження кожної ярлика. Це не використовує назву Windows кожної програми, оскільки це може змінитися в Putty, якщо ви використовуєте екран або SSH на іншому сервері, функцію, яку я особисто хочу зберегти!

Також включена функція "DeleteINIEntry ()", за допомогою якої ви можете створити ярлик, щоб вона видалила запис UniqueName з файлу INI. Або ви можете просто вручну редагувати та змінювати файл.

INIFilePath := "C:\Temp\AHK.ini"

RunOrSwitchWin( UniqueName, AppPath )
{  
    global INIFilePath
    IniRead, TargetID, %INIFilePath%, windowids, %UniqueName%
    ActiveID := WinExist("A")

    ; cannot use '=' here as comparing an integar to string doesn't work well
    IfEqual TargetID, %ActiveID%
    {
        WinMinimize 
        return
    }

    WinGet, AllIDs, list

    Loop, %AllIDs%
    {
        this_id := AllIDs%A_Index%

        ifEqual TargetID, %this_id%
        {
            DllCall("SwitchToThisWindow", "UInt", this_id, "UInt", 1)
            return
        }
    }

    run, %AppPath%,,, CurrentPID
    WinWait ahk_pid %CurrentPID%
    IniWrite, % WinExist("A"), %INIFilePath%, windowids, %UniqueName%

   return
}

DeleteINIEntry()
{
    global INIFilePath
    InputBox, UniqueName, Delete INI Entry, Enter UniqueName

    If ErrorLevel = 0
        IniDelete, %INIFilePath%, windowids, %UniqueName%

    return
}

^!3::DeleteINIEntry()

; Putty shortcuts. 
; ^!1 is NOT idempotent and will run it over and over again.
^!1::run "C:\Program Files\PuTTY\putty.exe"
^!2::RunOrSwitchWin( "session1", "C:\Program Files\PuTTY\putty.exe -load session1" )

Якщо ви не хочете, щоб вікно було мінімізовано, тоді просто прокоментуйте (додайте a;) до рядка WinMinimize, і воно буде просто зосереджено на активному вікні.


1

Це не пов'язана між собою активність, Explorer - це процес, який обробляє ці ярлики.

Є утиліти (наприклад, http://www.vsisystems.com/keyboardshortcuts.htm ), які мають намір мати цю функціональність, але я не знаю, чи хтось із них вирішить проблему швидкості.


1

Якщо Explorer зайнятий, він не може працювати з ярликами, тому потрібна інша програма.

Простий і ефективний запуск - PS Hot Launch VVL :

Це безкоштовна утиліта, яка дозволяє визначити власні гарячі клавіші, щоб одним натисканням клавіші можна було запустити програму, вставити часто використовуваний текст, змінити гучність звуку або майже будь-що інше. Програма вимагає Win95 / 98 / ME або WinNT / 2000 / XP, і є відмінним виконавцем навіть на повільних машинах. PS Hot Launch - ідеальна альтернатива меню "Пуск" та панелі швидкого запуску.

зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.