Frage

Ich mache einen bot für ein Flash-Spiel, und ich habe herausgefunden, wie man importieren Sie alle AutoIt Funktionen in meinem C# - code.

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);
}

(Ich bin mir ziemlich sicher, dass die unkommentierte man sollte derjenige sein, mit Griff-und Umgekehrt, aber das funktioniert für Minesweeper.)

So funktioniert es für Minesweeper und nicht verlangen, dass es das aktive Fenster ist.Wenn ich versuche, es auf meinem Flash-Spiel erfordert die Internet-Explorer-Fensters werden die aktiven.Ist das etwas, Flash erfordert, oder gibt es etwas zusätzliches, das ich tun könnte, damit es funktioniert, wenn das Spiel minimiert ist?

Dies muss nicht getan werden, mithilfe der AutoIt-Importe.Ich habe versucht SendMessage von user32 an einem Punkt auch, aber das hat nicht funktioniert für Flash-Inhalte überhaupt für mich.

Ich habe gerade getestet, auf eine zufällige website, anstatt ein Flash-Website oder Minesweeper und für einige Grund, warum der code funktioniert, wenn ich es dann ausführen aus der Autoit-scripting-Programm, aber nicht von meinem C# - Programm...

Juni 20th, 2012:Ich bin mir ziemlich sicher, dass dies etwas hat zu tun mit der Art und Weise der Griff wird übergeben.Ich habe einige tests gemacht mit dem Aufruf einer AutoIt EXE-Datei und verwenden Sie den Griff, die ich von C# - code als argument, muss ich hinzufügen eine 0x um es, und auch dann innerhalb der AutoIt code, den ich haben zu werfen es aus einer Zeichenfolge in ein HWnd, so, dass könnte etwas sein, in welchem Fall ich weiß nicht, was zu tun ist, da Sie die importierte Funktion stützt sich auf ein string-input für den Griff.

War es hilfreich?

Lösung

Etwas, möchten Sie vielleicht, um zu versuchen, um auszuschließen, Fenster, Griff und variabler Handhabung Probleme.Es sollte keine Notwendigkeit zu verwenden WinGetTitle der "Minesweeper" - Fenster Titel sollte gut funktionieren.Nach meinem AutoIt v3 Window Info tool in Windows 7 den Titel und die Klasse Minesweeper-Fenster sind sowohl Minesweeper.So hart codieren

auto.ControlClick("[TITLE:Minesweeper;KLASSE:Minesweeper], "", "", "left", 2, r * 10 r * 10);

könnte funktionieren.Für mehr auf, wie das funktioniert, finden Sie unter Fenster Advanced Beschreibungen in der AutoIt Hilfe Datei.Wenn dies immer noch nicht funktioniert, schauen Sie oben WinTitleMatchMode in der Hilfe-Datei.Es ermöglicht Ihnen, einige Regeln für die Anwendung der Kronzeugenregelung in-Fenster Titel-matching -, die könnte machen diese einfacher für Sie.

AutoIt X AutoIt DLL/COM-control in der version es ist, wie wäre das AuotIt, um jede andere Sprache, hat DLL/COM-Unterstützung.In den Fall, dass jemand anderes war, Fragen wie verwenden Sie AutoIt in C#.Leider AutoIt X oft hinkt in der Entwicklung und Erprobung von die wichtigste Sprache.Obwohl Sie haben keinen Grund zu glauben, Ihr problem wird verursacht durch einen Fehler nur gebe einige Hintergrundinformationen, die AutoItX Projekt.Wenn Sie nicht bereits haben, sollten Sie der post eine Kopie dieser Frage an die ActiveX/COM-Hilfe und Support (AutoItX) forum.Eines der besten Dinge über AutoIt in meiner Erfahrung über die Jahre ist die Gemeinde (die nicht verschoben hier viel).Jeweiligen Forums Abschnitt ist beliebt bei den Entwicklern der Sprache, der würde glücklich sein zu helfen.

Wie Sie Ihre 20. Juni beachten Sie, AutoIt behandelt alle Variablen, wie z.B. Saiten, bis er erkennt, dass seine etwas besonderes.Weiß es gar nicht Wert ist hexadezimal, es sei denn, es beginnt mit 0x Sie erwähnt.Dies verursachte alle Arten von seltsame Probleme für mich in der Vergangenheit.Ich habe bei mehreren Gelegenheiten hatte, um zero, um eine variable zu bekommen AutoIt zu bewerten, es richtig nach.Dies geschieht nicht oft mit AutoIt3 aber nur etwas im Auge zu behalten.

Wenn Sie irgendeine AutoIt Referenz-code viele Mitglieder der AutoIt forum gemacht haben, Minesweeper bots Sie können überprüfen, und möglicherweise finden Sie etwas, das hilfreich.

Andere Tipps

Stellen Sie sicher, dass Ihr Betrieb, Ihr C# - Programm als admin an.Dies ist der einzige Unterschied, den ich sehen kann, eine Methode, die funktioniert und die anderen nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top