Domanda
Ho un'applicazione C# con moduli Windows, usando la quale devo automatizzare l'apertura di un file utilizzando un software interno (MySoftware). Ho il seguente codice come di seguito. La mia comprensione è che WinWaitactive () dovrebbe aspettare fino a quando non faccio clic sulla finestra del software interno (MySoftWarewindow) e renderlo attivo, prima che il codice passino alla riga successiva e apra il file XML specificato (riga 6 in codice seguente). Invece ciò che sta accadendo è che la riga di codice successiva è eseguita anche prima che io possa rendere attivo il software interno, eseguendo così il pulsante Apri (riga 6 nel codice seguente) sulla finestra attiva corrente, che in questo caso è il modulo di domanda C# . Cosa pensi che stia andando storto qui? Grazie!
aut = new AutoItX3Lib.AutoItX3Class();
aut.WinWaitActive("mySoftwareWindow", "", 1);
aut.WinMenuSelectItem("mySoftwareWindow", "", "&File", "&Open", "", "", "", "", "", "");
aut.Send("C:\\test.xml", 0);
//click the Open button
aut.Send("!o", 0);
aut.Send("{ENTER}", 0);
Soluzione
Il timeout è molto Short, 1 secondo non è abbastanza. Crea time-out almeno 10 volte il caso peggiore, vai per almeno 20 qui. E Assicurati di controllare il valore di restituzione della funzione, non ha senso continuare se ha restituito il fallimento.