Domanda
Mi piacerebbe AutoHotkey per rilevare automaticamente quando appare una certa finestra di dialogo pop-up e prendere determinate azioni. Come lo faccio?
Esempio concreto
Nel mio caso particolare, mi piacerebbe AutoHotkey per chiudere il Aggiorna sommario dialog Word viene visualizzata quando voglio aggiornare il sommario.
Questo è il flusso di lavoro:
- Aggiorno i titoli nel mio documento di Word
- Io premo Ctrl + UN per selezionare l'intero documento
- Io premo F9 per aggiornare tutti i campi
Questa fastidiosa finestra di dialogo modale appare (che non può essere configurata in base alle mie ricerche su Google)
Ora, ho bisogno di premere Freccia in giù selezionare Aggiorna l'intera tabella seguito da accedere pressare Ok e continua
Mi piacerebbe AutoHotkey per emettere automaticamente il Freccia in giù , accedere comando perché il flusso di lavoro sopra descritto è qualcosa che eseguo una dozzina di volte al giorno.
Naturalmente, poiché avvio il flusso di lavoro, potrei semplicemente scrivere uno script AutoHotkey che faccia il tutto per me iniziando con Ctrl + UN come questo:
#IfWinActive ahk_class OpusApp
F9::
Send, ^a
Send, {F9}
Sleep, 200
Send, {Down}
Send, {Enter}
return
Tuttavia, l'esempio sopra è solo a scopo illustrativo, e ci sono casi in cui le finestre di dialogo a comparsa appaiono a caso e mi piacerebbe che AutoHotkey eseguisse un'azione in base al titolo della finestra di dialogo a comparsa.
La mia ricerca finora
- Alcune fonti Internet suggeriscono di utilizzare un ciclo AutoHotkey che cicli e controlli indefinitamente, diciamo ogni secondo, se esiste una finestra con un certo titolo e poi la chiude. Ma trovo che sia uno spreco di risorse della CPU
- Alcune altre fonti Internet menzionano a guscio insieme a un frammento di codice, e penso che sia la strada da percorrere, ma non capisco lo snippet di codice; qualcuno potrebbe spiegare come funziona e dare un esempio comprensibile se questa fosse la soluzione?
Il seguente frammento di codice è copiato da qui .
SetBatchLines, -1
Process, Priority,, High
Gui +LastFound
hWnd := WinExist()
DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
Return
ShellMessage( wParam,lParam ) {
If ( wParam = 32772 or WParam = 4) ; HSHELL_WINDOWACTIVATED := 4 or 32772
WinGetActiveTitle, Title
If ( Title = "sun 4 - foxtrot - Remote Desktop Connection" )
SetCapsLockState, on
else SetCapsLockState, off
}
Vedo il
If (Title = "sun 4 - foxtrot - Remote Desktop Connection")
parte. Cosa fa tutto il resto?