Wiarygodne niestandardowe klawisze skrótów Windows?

9

Mam globalne klawisze skrótów Windows przypisane do kilku różnych instancji cmd.exe. Robię to, tworząc skróty do cmd.exe na pulpicie i przypisując każdemu z nich unikalny klawisz skrótu (na przykład CTRL + SHIFT + U). Całkiem podstawowe rzeczy. Używam Win2K8 (R1 i R2).

To działa dobrze ... przez większość czasu. Ale z irytującą regularnością czasami tak nie jest. Lub będzie działać z dużym opóźnieniem (wiele sekund). Nie ma znaczenia, która aplikacja jest aktualnie aktywna (może to być nawet jeden z wierszy poleceń). Nie ma znaczenia, jakie klucze przypisuję (wypróbowałem kilka odmian WIN, CTRL i SHIFT). Zauważyłem, że jest to często, ale nie zawsze, skorelowane z borykaniem się programu explorer.exe w taki czy inny sposób (powiedzmy, okno eksploratora otworzyło się na udział plików, który jest niedostępny, aplikacja nie odpowiada lub cokolwiek innego). Innymi słowy, obsługa klawiszy skrótu wydaje się być bardzo wrażliwa na niepowiązaną aktywność systemu. Zauważ, że ilekroć mam ten problem, zawsze mogę z powodzeniem ALT + TAB przejść do okna, do którego chcę przejść, ale jest to żmudne.

Używam skrótów do tych okien poleceń setki razy dziennie, więc nawet 1% wskaźnik awarii staje się naprawdę denerwujący.

Czy istnieje sposób, aby to naprawić, czy istnieje narzędzie innej firmy, które NIEZAWODNIE przechwyci niestandardowe kombinacje klawiszy, aby skupić się na dowolnych aplikacjach, które chcę, w sposób niezależny od innych działań systemu?

UZUPEŁNIENIE:

Skróty systemu Windows mają właściwość, której nie chciałbym utracić po przełączeniu na narzędzie skrótu innej firmy: skróty systemu Windows są idempotentne. Po uruchomieniu skrótu do jakiejś aplikacji ponowne naciśnięcie kombinacji klawiszy skrótu powoduje przejście do już uruchomionego procesu - nie uruchamia nowego procesu.

Peter Baer
źródło

Odpowiedzi:

7

Użyj Autohotkey. Język skryptowy jest niestandardowy i może być trudny do nauczenia, ale jeśli wszystko, co chcesz zrobić, to niezawodnie uruchamiać programy, jest to proste. Dodatkowo możesz bazować na skrótach klawisz Windows! Użyj poniższego przykładowego skryptu i zmodyfikuj go do swoich potrzeb. (Linie zaczynające się od ;są komentarzami.)

;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

Zapisz to jako plik .ahk na pulpicie, zainstaluj autohotkey i uruchom go.

Za każdym razem, gdy naciśniesz dowolną kombinację klawiszy, AutoHotkey przeskanuje ten skrypt. Jeśli pasuje do dowolnej kombinacji klawiszy poprzedzającej a ::, wykona następne polecenie. Jeśli brakuje instrukcji return, AHK będzie kontynuować skanowanie skryptu w poszukiwaniu dopasowań po wykonaniu instrukcji. Kombinacje klawiszy opisano poniżej.

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

Możesz używać ich w dowolnej kombinacji z literami na klawiaturze. Jedna kombinacja, którą uważam za niezwykle przydatną, jest następująca.

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

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

To jest Alt + `i Win +`. Kiedy ten skrypt jest uruchomiony i naciskam Alt + `, skrypt wysyła ctrl + F4. Win + `zmienia się na alt + F4.

Autohotkey jest w zasadzie własnym językiem programowania. Mam skonfigurowane skrypty, które symulują system „Gesty rockera”. Mam Gmaila jak skróty do mojego e-maila. Jeśli poświęcisz czas na nauczenie się niektórych z jego sztuczek, możesz uzyskać od niego szaleństwo. Lifehacker ma całą masę przydatnych skryptów dla Autohotkey. Baw się dobrze!

Tim Coker
źródło
3
Hmm - ważną funkcją klawisza skrótu Windows, na której polegam, jest jego idempotencja. Przy pierwszym naciśnięciu klawiszy CTRL + SHIFT + U, aby wyświetlić podpowiedź, uruchamia cmd.exe. Następnym razem, gdy uderzę w tę kombinację, jeśli ten cmd.exe nadal działa, po prostu przenosi go na wierzch, zamiast uruchamiać inną instancję (co robi polecenie uruchamiania Autohotkey). Czy istnieje sposób, aby łatwo to zrobić za pomocą AHK?
Peter Baer
3

Oto jak używam AutoHotKey w sposób, który spełnia twoje idempotentne wymagania.

Jako przykład podłączyłem Caps Lock+ ado okna przeglądarki Firefox na przepełnieniu stosu, Caps Lock+ sdo przeglądarki Firefox w trybie Super User i Caps Lock+ ddo wiersza polecenia.

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")

Możesz zmienić tryb dopasowania tytułu tak, aby był tak restrykcyjny, jak potrzebujesz. Gdybym miał inny skrót klawiszowy pasujący do „Mozilla Firefox” (na przykład zamiast „superużytkownika”), przeglądałbym wszystkie moje instancje Firefoksa, ponieważ każdy z nich ma ten tekst w tytule okna i mam ustawione dopasowanie do tekstu gdziekolwiek w tytule.

Ten skrypt jest w dużej mierze oparty na tym artykule w LifeHacker.

yhw42
źródło
Jak można zmodyfikować ten skrypt, aby NIE był idempotentny? W szczególności chcę wielu wystąpień programu, jeśli naciskam klawisze skrótu (używam szpachli i muszę mieć możliwość łączenia się z ponad 4 serwerami w danym momencie i nie chcę sięgać po mysz) )
Doktor J
Jeśli w tytule okna jest określony, unikalny tekst dla każdej instancji, możesz przypisać klawisze skrótu, aby dopasować ten tekst. Zobacz powyższe Caps+ai Caps+spowyżej dla dwóch różnych instancji Firefoxa, @DoktorJ
yhw42
Ale co jeśli nigdy nie chcę, żeby to pasowało? Kiedy przełączam się między nimi, po prostu ALT + TAB, więc nie potrzebuję skrótów dla każdego wystąpienia PuTTY - potrzebuję tylko skrótu, który zawsze otwiera nowe wystąpienie PuTTY, bez względu na to, ile okien PuTTY już posiadam mieć otwarte. Czy po prostu wywołanie „uruchom c: \ tools \ putty \ putty.exe” bezpośrednio z przypisanego skrótu?
Doktor J
@DoktorJ: Oh! Tak. Właśnie tak byś to zrobił. Chociaż myślę, że możesz także przypisać skróty klawiszowe we właściwościach skrótu Windows. Zakładałem, że chciałeś Caps+1wskazać konkretną instancję PuTTY (która moim zdaniem jest lepsza niż AltTab :)).
yhw42
3

Kolejna alternatywa dla szybkiego i intuicyjnego uruchamiania programów:

Launchy

Launchy to bezpłatne narzędzie systemu Windows i Linux, które pomaga zapomnieć o menu Start, ikonach na pulpicie, a nawet menadżerze plików.

Launchy indeksuje programy w menu Start i może uruchamiać dokumenty, pliki projektów, foldery i zakładki za pomocą kilku naciśnięć klawiszy!

alternatywny tekst

Gauthier
źródło
Wygląda to na wyszukiwanie w menu Start Win7.
Theo Belaire
@Tyr: tak. Zacząłem używać tego w Windows XP, ale nadal to robię w Win7. Nie korzystałem zbyt często z wyszukiwania w menu Start, ale mam wrażenie, że Launchy jest jeszcze szybszy. Mogę się jednak mylić.
Gauthier
2

Niestety 6 lat później w systemie Windows 10 występują te same problemy, a dzięki najnowszej aktualizacji systemu Windows 10 zauważyłem, że niektóre skróty / programy nie są już idempotentne ! Szczególnie Putty, gdzie mam wiele skrótów do tej samej sesji.

Więc używam AutoHotKey i zmodyfikowałem funkcję udostępnioną w tym wątku (na podstawie tego artykułu w LifeHacker ), aby używała pliku INI do śledzenia każdego skrótu. To nie korzysta z tytułu Windows każdego programu, ponieważ może się zmienić w Putty, jeśli używasz screena lub SSH na innym serwerze, funkcję, którą osobiście chcę zachować!

Uwzględniono również funkcję „DeleteINIEntry ()”, którą można utworzyć, aby usunąć wpis UniqueName z pliku INI. Lub możesz po prostu ręcznie edytować i zmieniać plik.

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" )

Jeśli nie chcesz, aby okno się minimalizowało, po prostu skomentuj (dodaj a;) do linii WinMinimize, a ono po prostu pozostanie skupione na aktywnym oknie.

agalest
źródło
1

To nie jest niezwiązana aktywność, odkrywca to proces, który obsługuje te skróty.

Istnieją narzędzia (np. Http://www.vsisystems.com/keyboardshortcuts.htm ), które rzekomo mają tę funkcję, ale nie wiem, czy którekolwiek z nich rozwiązałoby problem z prędkością.

Ofir
źródło
1

Jeśli Explorer jest zajęty, nie może obsługiwać skrótów, dlatego wymagany jest inny program.

Prostym i wydajnym programem uruchamiającym jest PS Hot Launch VVL :

Jest to bezpłatne narzędzie, które pozwala zdefiniować własne klawisze skrótu, dzięki czemu jedno naciśnięcie klawisza może uruchomić aplikację, wstawić często używany tekst, zmienić głośność dźwięku lub cokolwiek innego. Program wymaga Win95 / 98 / ME lub WinNT / 2000 / XP i jest znakomity nawet na wolnych komputerach. PS Hot Launch to idealna alternatywa dla menu Start i panelu Quick Launch.

wizerunek

harrymc
źródło