À l'aide de AutoHotkey à cliquer sur un bouton dans une fenêtre
Je veux faire un script AutoHotkey pour modifier la police du PuTTY SSH client. (Je préfère les petits caractères pour la haute densité d'information, mais quand je vais les montrer quelque chose à un collègue, ils doivent être en mesure de voir clairement.) J'ai reçu ce jour:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
#SingleInstance force ; Lets the RunMe plugin for Notepad++ reload the script with Shift-F5.
#IfWinActive ahk_class PuTTY ; If PuTTY is active
^+1:: ; and Ctrl-Shift-1 is pressed
{
Send !{Space} ; Alt-Space to open the system menu
Send g ; open Change Settings
Send !g ; select the Category menu
Send w ; select the Window category
Send {Right} ; expand the category
Send a ; select the Appearance subcategory
ControlClick, ClassNN Button8, ahk_class PuTTYConfigBox, , Left, 1
}
#IfWinActive
Lorsqu'il est exécuté à partir d'un Mastic de fenêtre de terminal, le tout grâce à "Envoyer un" navigue le Mastic menus comme prévu, m'amener à l'Apparition de la sous-catégorie. À ce point, je tiens à cliquer sur le bouton "Modifier" pour définir la police. Je préfère ne pas envoyer un tas d'onglets ou de spécifier une coordonnée d'écran pour sélectionner le bouton, comme cela semble kludgey et à rompre avec les futures mises à jour. Je ne peux pas obtenir ControlClick de travailler, bien que. La ligne que j'ai utilisé ci-dessus est ma meilleure supposition après quelques heures de recherche, et je ne vois pas pourquoi il ne fait rien.
Voici la Fenêtre Spy de sortie quand je suis en vol stationnaire au-dessus du bouton:
>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
PuTTY Reconfiguration
ahk_class PuTTYConfigBox
>>>>>>>>>>>>( Mouse Position )<<<<<<<<<<<<<
On Screen: 1051, 207 (less often used)
In Active Window: 432, 202
>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<
ClassNN: Button8
Text: Change...
Color: 0xF0F0F0 (Blue=F0 Green=F0 Red=F0)
>>>>>>>>>>( Active Window Position )<<<<<<<<<<
left: 619 top: 5 width: 456 height: 438
>>>>>>>>>>>( Status Bar Text )<<<<<<<<<<
>>>>>>>>>>>( Visible Window Text )<<<<<<<<<<<
&Apply
&Cancel
Cate&gory:
Cursor appearance:
B&lock
&Underline
&Vertical line
Cursor &blinks
Adjust the use of the cursor
Fo&nt used in the terminal window
Font: Lucida Console, 24-point
Change...
Allow selection of variable-pitch fonts
Font &quality:
Antialiased
Non-Antialiased
ClearType
Default
Font settings
Hide mouse &pointer when typing in window
Adjust the use of the mouse pointer
Gap b&etween text and window edge:
&Sunken-edge border (slightly thicker)
Adjust the window border
>>>>>>>>>>>( Hidden Window Text )<<<<<<<<<<<
>>>>( TitleMatchMode=slow Visible Text )<<<<
1
>>>>( TitleMatchMode=slow Hidden Text )<<<<
Merci pour votre aide.
Send g
etc.) ouvrir de nouvelles fenêtres ou de modifier le titre de la fenêtre? Si c'est le cas, essayez d'ajouter un WinWait
avant ControlClick
. Choisissez un identifiant (probablement un titre de fenêtre combinée avec ahk_class
) qui vous permettra de trouver uniquement la fenêtre qui apparaît après la dernière commande (Send a
). J'espère que c'est assez clair.Les commandes de navigation ne pas le faire, autant que je peux dire, ouvrir de nouvelles fenêtres ou de modifier le titre de la fenêtre. Cependant, votre suggestion travaillé de toute façon (avec un changement à la ControlClick paramètres). Merci!
OriginalL'auteur Robert | 2013-09-16
Vous devez vous connecter pour publier un commentaire.
J'avais besoin de faire deux choses à obtenir que cela fonctionne.
D'abord, y compris le mot "ClassNN" dans la première ControlClick paramètre a été mauvais, en dépit de plusieurs exemples que j'ai trouvé cette. Le paramètre peut être le texte du bouton (Changement...), le début du texte (Modification), ou de ses ClassNN (Button8), mais pas "ClassNN Button8". Tout ce qui suit est inutile, et fonctionne très bien avec les valeurs par défaut. Actuellement, je suis juste à l'aide de "ControlClick, Changement...", comme l'ensemble de la ligne, mais il peut être plus judicieux de spécifier explicitement le WinTitle (soit le "Mastic Reconfiguration" ou "ahk_class PuTTYConfigBox" œuvres).
Seconde, comme MCL souligné, j'avais besoin de "WinWait, Mastic Reconfiguration" avant le ControlClick de commande. Je ne suis pas tout à fait clair pourquoi, mais ça fonctionne.
Voici ma dernière, code de travail, avec F9 commutation de ProggyCleanTT de 12 points, et la touche F10 de commutation à Lucida Console de 20 points:
Il fait des choses bizarres si vous n'attendez pas un instant entre la pression sur la touche de raccourci et d'autres contributions, et il pourrait probablement avoir plus de navigation robuste, mais il fonctionne.
OriginalL'auteur Robert