Des touches de raccourci Windows fiables et personnalisées?


9

J'ai des touches de raccourci Windows globales affectées à plusieurs instances différentes de cmd.exe. Je le fais en créant des raccourcis vers cmd.exe sur mon bureau et en attribuant à chacun une touche de raccourci unique (par exemple, CTRL + MAJ + U). Des trucs assez basiques. J'utilise Win2K8 (R1 et R2).

Cela fonctionne très bien ... la plupart du temps. Mais avec une régularité exaspérante, parfois non. Ou cela fonctionnera avec un long délai (plusieurs secondes). Peu importe quelle application a actuellement le focus (elle peut même être l'une des invites de commande). Peu importe les touches que j'attribue (j'ai essayé quelques variantes de WIN, CTRL et SHIFT). J'ai remarqué que cela est souvent, mais pas toujours, en corrélation avec explorer.exe en difficulté d'une manière ou d'une autre (par exemple, une fenêtre d'exploration ouverte sur un partage de fichiers qui n'est pas disponible, ou une application qui ne répond pas, ou autre). En d'autres termes, la gestion des touches de raccourci semble être très sensible à l'activité système indépendante. Notez que chaque fois que j'ai ce problème, je peux toujours réussir ALT + TAB à la fenêtre que je veux accéder, mais c'est fastidieux.

J'utilise les raccourcis vers ces fenêtres de commande des centaines de fois par jour, donc même un taux d'échec de 1% devient vraiment ennuyeux.

Existe-t-il un moyen de résoudre ce problème ou existe-t-il un utilitaire tiers qui interceptera FIABLEMENT les combinaisons de touches personnalisées pour mettre l'accent sur les applications que je veux, d'une manière indépendante des autres activités du système?

ADDENDA:

Il y a une propriété des raccourcis Windows que je ne voudrais pas perdre si je passe à un outil de raccourci clavier tiers: les raccourcis Windows sont idempotents. Une fois que vous avez lancé un raccourci vers une application, appuyez à nouveau sur la combinaison de touches de raccourci pour accéder au processus déjà lancé - il ne lance pas de nouveau processus.

Réponses:


7

Utilisez Autohotkey. Le langage de script n'est pas standard et peut être difficile à apprendre, mais si tout ce que vous voulez faire est de lancer des programmes de manière fiable, c'est simple. De plus, vous pouvez baser des raccourcis sur la touche Windows! Utilisez l'exemple de script suivant et modifiez-le selon vos besoins. (Les lignes commençant par ;sont des commentaires.)

;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

Enregistrez-le en tant que fichier .ahk sur votre bureau, installez autohotkey et exécutez-le.

Chaque fois que vous appuyez sur une combinaison de touches, AutoHotkey analyse ce script. S'il correspond à l'une des combinaisons de touches qui précèdent a ::, il exécutera la commande suivante. Si l'instruction de retour est manquante, l'AHK continuera de rechercher des correspondances dans le script après avoir exécuté votre instruction. Les combinaisons de touches sont décrites ci-dessous.

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

Vous pouvez les utiliser dans n'importe quelle combinaison avec les lettres de votre clavier. Une combinaison que je trouve extrêmement utile est la suivante.

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

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

C'est Alt + `et Win +`. Lorsque ce script est en cours d'exécution et que j'appuie sur alt + `, le script envoie ctrl + F4. Win + `devient alt + F4.

Autohotkey est essentiellement son propre langage de programmation. J'ai mis en place des scripts qui simulent l'ensemble du système "Rocker Gestures". J'ai GMail comme des raccourcis pour mon e-mail. Si vous passez du temps à apprendre certaines de ses astuces, vous pouvez en devenir fou. Lifehacker a tout un tas de scripts utiles pour Autohotkey. S'amuser!


3
Hmm - une caractéristique importante de la touche de raccourci Windows sur laquelle je me fie est son idempotence. La première fois que j'appuie sur CTRL + MAJ + U pour afficher une invite donnée, il lance cmd.exe. La prochaine fois que j'appuie sur ce combo, si ce cmd.exe est toujours en cours d'exécution, il le met simplement au premier plan, au lieu de lancer une autre instance (ce que fait la commande d'exécution Autohotkey). Existe-t-il un moyen de le faire facilement avec AHK?
Peter Baer

3

Voici comment j'utilise AutoHotKey d'une manière qui répond à vos exigences idempotentes .

Par exemple, j'ai accroché Caps Lock+ aà une fenêtre Firefox sur Stack Overflow, Caps Lock+ sà Firefox chez Super User, et Caps Lock+ dà une invite de commande.

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

Vous pouvez modifier le mode de correspondance du titre pour qu'il soit aussi restrictif que nécessaire. Si j'avais un autre raccourci clavier qui correspondait à "Mozilla Firefox" (au lieu de "Super User", par exemple), il parcourrait toutes mes instances Firefox, car chacune a ce texte dans le titre de la fenêtre et je l'ai configuré pour correspondre au texte n'importe où dans le titre.

Ce script est fortement basé sur cet article sur LifeHacker.


Comment ce script peut-il être modifié pour NE PAS être idempotent? Plus précisément, je veux plusieurs instances d'un programme si j'appuie sur les touches de raccourci (j'exécute du mastic, et je dois pouvoir me connecter à plus de 4 serveurs à un moment donné, et je ne veux pas avoir à toucher la souris )
Doktor J

S'il existe un texte spécifique et unique dans le titre de la fenêtre pour chaque instance, vous pouvez attribuer des raccourcis clavier pour correspondre à ce texte. Voir le Caps+aet Caps+sci - dessus pour deux instances différentes de Firefox, @DoktorJ
yhw42

Mais que se passe-t-il si je ne veux jamais qu'il corresponde? Lorsque je bascule entre eux, je viens ALT + TAB, donc je n'ai pas besoin de raccourcis pour chaque instance de PuTTY - j'ai juste besoin d'un raccourci qui ouvre toujours une nouvelle instance de PuTTY, peu importe le nombre de fenêtres PuTTY que j'ai déjà avoir ouvert. Est-ce que le simple fait d'appeler "exécuter c: \ tools \ putty \ putty.exe" directement à partir du raccourci clavier affecté le fera?
Doktor J

@DoktorJ: Oh! Oui. C'est exactement comme ça que vous le feriez. Bien que je pense que vous pouvez également attribuer des raccourcis clavier dans les propriétés du raccourci Windows. J'avais supposé que vous vouliez Caps+1pointer vers une instance spécifique de PuTTY (ce qui est mieux qu'AltTab à mon avis :)).
yhw42

3

Encore une autre alternative pour lancer vos programmes rapidement et intuitivement:

Launchy

Launchy est un utilitaire Windows et Linux gratuit conçu pour vous aider à oublier votre menu Démarrer, les icônes sur votre bureau et même votre gestionnaire de fichiers.

Launchy indexe les programmes dans votre menu Démarrer et peut lancer vos documents, fichiers de projet, dossiers et signets en quelques touches seulement!

texte alternatif


Cela ressemble à la recherche du menu Démarrer de Win7.
Theo Belaire

@Tyr: c'est le cas. J'ai commencé à l'utiliser dans Windows XP, mais continue à le faire dans Win7. Je n'ai pas beaucoup utilisé la recherche dans le menu Démarrer, mais j'ai l'impression que Launchy est toujours plus rapide. Je peux me tromper cependant.
Gauthier

2

Malheureusement, 6 ans plus tard avec Windows 10, les mêmes problèmes existent et avec une récente mise à jour de Windows 10, j'ai constaté que certains raccourcis / programmes ne sont plus idempotents ! Surtout Putty où j'ai plusieurs raccourcis pour la même session.

J'ai donc utilisé AutoHotKey et modifié la fonction partagée dans ce fil (basé sur cet article sur LifeHacker ) afin qu'il utilise un fichier INI pour garder une trace de chaque raccourci. Cela n'utilise pas le titre Windows de chaque programme car cela peut changer dans Putty si vous utilisez screen ou SSH dans un autre serveur, une fonctionnalité que je veux personnellement garder!

Est également incluse une fonction "DeleteINIEntry ()" pour laquelle vous pouvez créer un raccourci pour lui faire supprimer une entrée UniqueName du fichier INI. Ou vous pouvez simplement modifier et modifier manuellement le fichier.

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

Si vous ne voulez pas que la fenêtre soit réduite, alors commentez simplement (ajoutez un;) à la ligne WinMinimize et elle restera concentrée sur la fenêtre active.


1

Ce n'est pas une activité indépendante, l'explorateur est le processus qui gère ces raccourcis.

Il existe des utilitaires (par exemple http://www.vsisystems.com/keyboardshortcuts.htm ) qui prétendent avoir cette fonctionnalité, mais je ne sais pas si l'un d'eux résoudrait le problème de vitesse.


1

Si Explorer est occupé, il ne peut pas gérer les raccourcis, un autre programme est donc requis.

Un lanceur simple et efficace est PS Hot Launch VVL :

Il s'agit d'un utilitaire gratuit qui vous permet de définir vos propres raccourcis clavier de manière à ce qu'une simple pression sur une touche puisse lancer une application, insérer du texte couramment utilisé, modifier votre volume audio ou à peu près n'importe quoi d'autre. Le programme nécessite Win95 / 98 / ME ou WinNT / 2000 / XP, et est un excellent interprète même sur des machines lentes. PS Hot Launch est l'alternative parfaite au menu Démarrer et au panneau de lancement rapide.

image

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.