Sto creando un bot per un gioco Flash e ho capito come importare tutte le funzioni AutoIt nel mio codice C#.Invio di messaggi a un gioco Flash con C# e AutoIt
string title = "Minesweeper";
string full = auto.WinGetTitle(title,"");
string handle = auto.WinGetHandle(full, "");
if (auto.WinExists(full, "") == 1)
textBox1.Text = "window exists";
addressBox.Text = full;
for (int r = 1; r < 40; r++)
{
auto.ControlClick(full, "", "", "left", 2, r * 10, r * 10);
//auto.ControlClick(handle, "", "", "left", 2, r * 10, r * 10);
}
(io sono abbastanza sicuro quello commentata dovrebbe essere quello con manico e viceversa, ma questo funziona per Minesweeper.)
Così funziona per Minesweeper e non richiede di essere la finestra attiva. Quando provo a farlo funzionare sul mio gioco Flash, è necessario che la finestra di Internet Explorer sia attiva. È qualcosa che Flash richiede o c'è qualcosa di aggiuntivo che potrei fare per farlo funzionare quando il gioco è ridotto al minimo?
Questo non deve essere eseguito utilizzando le importazioni di AutoIt. Ho provato anche SendMessage da user32 a un certo punto, ma non ha funzionato per i contenuti Flash per me.
Ho appena testato questo su un sito web a caso invece di un sito Flash o Minesweeper e per qualche motivo il codice funziona se eseguo dall'interno del programma di scripting Autoit, ma non dal mio programma C# ...
20 giugno 2012: Sono abbastanza sicuro che questo abbia qualcosa a che fare con il modo in cui viene gestita la maniglia. Ho fatto alcuni test con la chiamata di un file EXE AutoIt e utilizzando l'handle che ottengo dal codice C# come argomento, devo aggiungere un 0x
ad esso, e anche successivamente nel codice AutoIt devo farlo da una stringa a un HWnd, in modo che possa essere qualcosa, nel qual caso non so cosa fare poiché la funzione importata si basa su un input di stringa per l'handle.
Come hai esportato le funzioni di autoit in C#? Sono solo curioso. –
http://www.lancelarsen.com/Blog/tabid/72/EntryId/48/AutoIt-C-Helper-Library.aspx Theres un sito con le risorse dove qualcuno ha fatto una classe di importare le funzioni dalla libreria DLL. Ma penso che se si include solo la libreria non è necessariamente necessario utilizzare quella classe che ha fatto. Dico questo perché la sua classe helper non include tutte le funzioni come importazioni ma è comunque possibile accedere a tutti i metodi autoit. –