AutoHotKey con una migliore consapevolezza del sonno


1

Conosco AutoHotKey e conosco AutoScriptWriter ma il mio problema si riduce ai tempi.

Sto cercando di riprodurre l'input dell'utente in un'applicazione, ma l'applicazione a volte ha un tempo di caricamento per alcune funzioni, altre volte no, in pratica ho bisogno di uno script writer che sappia che se non premo il pulsante del mouse per 5 secondi, lo sceneggiatore inserisce una sospensione nella sceneggiatura per 5 secondi, ma se aspetto 10 secondi, inserisce una sospensione nella sceneggiatura per 10 secondi e così via. In questo momento AutoScriptWriter inserisce Sleep 100 come impostazione predefinita, che è troppo breve e non voglio scorrere manualmente lo script dopo che i reparti hanno cercato di ricordare se questo clic avrebbe dovuto attendere 5 o 10 secondi o avere solo un piccolo sonno.

Ringrazia tutti.


il mio suggerimento per risolvere il problema: registrare una sequenza di tasti vuota (cioè non fa nulla senza effetti collaterali) in ogni punto in cui si desidera effettuare una lunga attesa (come Alt-pper un'attesa di 5 secondi) e quindi fare una ricerca / sostituzione nello script su quel tasto e sostituire con il sleep 5000o qualsiasi altra cosa.
yhw42

Grazie yhw42, potrebbe funzionare bene. Dovresti metterlo come una risposta, potrebbe essere il modo corretto di aggirare. Devo ancora provarlo e vedere come funziona.
ScottN,

pubblicato come risposta. Spero che funzioni per te.
yhw42,

Risposte:


0

provare WinWaitActive , WindowTitleHere

.... azioni qui

Quindi non avvierà l'azione fino a quando l'applicazione non sarà effettivamente caricata e attiva.

In realtà, AutoScriptWriter di solito aggiunge il comando WinWaitActive.


Mi riferisco al caricamento nell'applicazione. La finestra è già attiva (l'applicazione è in esecuzione), il problema è in attesa del caricamento di determinate funzionalità dell'app per continuare con i clic. Ad esempio, caricando una grande quantità di nomi di file in un elenco nella finestra, ciò non avviene istantaneamente, specialmente se ci sono molti file.
ScottN,

Se si dispone di una barra di stato, è possibile utilizzare il secondo parametro - WinWaitActive, WindowTitle, WindowTextper attendere il testo specifico nella finestra che appare solo quando il caricamento della finestra è stato completato
Dave Neeley

Siamo spiacenti, non funzionerà perché ci sono alcuni "controlli" visivi che si aggiornano in modo indipendente e asincrono a seconda di ciò che si fa clic e non vi è alcuna modifica del testo della finestra per riflettere questo. Pensa a una moderna pagina Web Ajax che mostra alcune informazioni quando fai clic su un pulsante o qualcosa viene caricato.
ScottN,

0

Ecco un'idea per una soluzione alternativa:

  • assegnare alla lunga attesa un tasto "vuoto" senza effetti collaterali
  • durante la registrazione della macro, aggiungere la sequenza di tasti in cui è necessaria la lunga pausa
  • una volta che hai lo script macro, fai una ricerca / sostituzione sulla sequenza di tasti e sostituiscilo con le istruzioni per la lunga attesa, come Sleep 5000

Per "vuoto" intendo una sequenza di tasti senza effetti collaterali e senza alcun impatto sull'area di lavoro della macro. Se dovesse cambiare la voce di menu selezionata o il posizionamento della scheda o avere altri effetti collaterali, la ricerca / sostituzione di quella riga potrebbe rendere lo script inutilizzabile. Se hai difficoltà a trovare una singola Alt-psequenza di tasti (come o qualsiasi altra cosa) puoi anche usare una sequenza che fa un'azione con una seconda sequenza di tasti che la annulla, come una digitazione aseguita da un backspace.

Se hai diverse lunghezze di pausa, puoi usare diversi tasti per diverse lunghezze di attesa. Basta fare una ricerca / sostituzione su ciascuno separatamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.