Automazione del controllo del browser Web
-
20-08-2019 - |
Domanda
Sto cercando di automatizzare alcune cose su un gioco flash in esecuzione in un controllo browser web nel mio programma C #. Usando il dll sendmessage di user32 sono stato in grado di fare clic sulle coordinate su pagine regolari come Google, ma non funziona con i contenuti flash. In che modo posso farlo? Inoltre non può essere rilevabile nel gioco flash. Ne ho uno funzionante in autoit ma mi piacerebbe riscriverlo in c # e farlo funzionare al minimo.
Soluzione
Perché non chiamare semplicemente lo script Autoit / Autohotkey dal programma C # usando la classe System.Diagnostics.Process?
ProcessStartInfo psi = new ProcessStartInfo("your_script.ahk");
psi.CreateNoWindow = true;
Process procScript = Process.Start(psi);
procScript.WaitForExit();
Nota CreateNoWindow = true per assicurarsi che venga eseguito nascosto e WaitForExit (), per far sì che il tuo codice attenda il ritorno del processo.
AutoIt e AutoHotkey hanno alcuni comandi di automazione molto potenti che sono stati perfezionati nel corso degli anni. È molto difficile riprodurre funzionalità C # /. NET simili ma altrettanto affidabili, credimi, ci ho provato.
Altri suggerimenti
Dai un'occhiata a WatiN. Potente automazione del browser, compatibile con C #:
L'uso di SendMessage o PostMessage funzionerà. Devi inviare 3 messaggi, WM_MOUSEMOVE, quindi WM_MOUSEDOWN, quindi WM_MOUSEUP. WM_MOUSEMOVE deve indicare una posizione diversa da WM_MOUSEDOWN e WM_MOUSEUP. WM_MOUSEDOWN e WM_MOUSEUP dovrebbero trovarsi nella stessa posizione. Funziona per me.