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.

È stato utile?

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 #:

http://watin.sourceforge.net/

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top