2010-02-28 14 views
11

Je suis constamment activer Firefox puis en appuyant sur Ctrl + L de se concentrer la barre d'adresse et faire une recherche ou tapez une URL.Comment puis-je passer la clé interceptée par une application dans autohotkey

Idéalement je peux être dans une application et appuyez sur Ctrl + L et Firefox sera activé avec la barre d'adresse concentré et prêt pour l'entrée. Dans les étapes de script AutoHotkey. J'ai essayé ceci et cela ne semble pas fonctionner. D'après ce que j'ai lu, tilde est « pass-through »:

^l:: 
IfWinExist ahk_class MozillaUIWindowClass 
{ 
    WinActivate 
    Send ~^l 
} 
+0

viens de trouver ce environ 30 secondes avant que je vais poster la même question fondamentale. Merci! – asfallows

Répondre

18

fini par obtenir la réponse à cette question moi-même sur le AHK forum.
Il faut utiliser le modificateur de signe dollar ($).

$^l:: 
IfWinExist ahk_class MozillaUIWindowClass 
{ 
    WinActivate 
    Send ^l 
} 


De AutoHotkey aide:

($) C'est généralement nécessaire que si le script utilise la commande Envoyer pour envoyer les clés qui composent le raccourci clavier lui-même, ce qui pourrait autrement causer à déclencher lui-même.


Et voici le script complet je fini par utiliser. Si Firefox est déjà actif, Ctrl + L est simplement passé et se comporte comme d'habitude. Si en dehors de Firefox lorsque Ctrl + L est pressé, Firefox est activé et un nouvel onglet est créé; prêt pour la recherche.

$^l:: 
IfWinExist ahk_class MozillaUIWindowClass 
{ 
    IfWinActive ahk_class MozillaUIWindowClass 
    { 
    Send ^l 
    } 
    else 
    { 
    WinActivate 
    Send ^t 
    } 
} 
0

Je ne pense pas que le tilde applique dans ce cas, mais Envoyer pourrait envoyer les clés plus rapidement que la fenêtre active en fait, si quelque chose comme cela pourrait être mieux:

SetKeyDelay, 10, 10 ; adds 10ms delay between and during keystrokes 
IfWinExist, ahk_class MozillaUIWindowClass 
{ 
    WinActivate, 
    WinWaitActive, ; waits until window is active 
    Send, ^l 
} 
return