Ich mache einen kleinen Bot in C#.
Im Moment funktioniert es ziemlich gut, es kann Text aus einer Datei laden und für Sie eingeben.Variablen aus XML lesen, um Maus zu bewegen
Ich möchte das Programm mit meinen Freunden teilen. Aber ich stolpere über ein kleines Problem.
Wenn sich die Auflösungen ändern, ändern sich die Schaltflächen und Textfelder.
Deshalb möchte ich meinen Freunden erlauben, die Mausposition zu schreiben ist eine XML-Datei, die ich in mein Programm lade.
in den Variablen zu laden, ich verwende dieses Skript:
private void Initialize() {
XmlTextReader reader = new XmlTextReader(Application.StartupPath + @"..\..\..\CursorPositions.xml");
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.Element: // The node is an element.
element = reader.Value;
break;
case XmlNodeType.Text: //Display the text in each element.
switch (element) {
case "Textbox-X":
textX = int.Parse(reader.Value);
break;
case "Textbox-Y":
textY = int.Parse(reader.Value);
break;
case "SliderBegin-X":
sliderX = int.Parse(reader.Value);
break;
case "SliderBegin-Y":
sliderY = int.Parse(reader.Value);
break;
case "SubmitButton-X":
submitX = int.Parse(reader.Value);
break;
case "SubmitButton-Y":
submitY = int.Parse(reader.Value);
break;
}
break;
}
}
Und das ist meine XML-Datei:
<?xml version="1.0" encoding="utf-8" ?>
<CursorPositions>
<Textbox-X>430</Textbox-X>
<Textbox-Y>270</Textbox-Y>
<SliderBegin-X>430</SliderBegin-X>
<SliderBegin-Y>470</SliderBegin-Y>
<SubmitButton-X>860</SubmitButton-X>
<SubmitButton-Y>365</SubmitButton-Y>
</CursorPositions>
Das Schema sieht wie folgt aus:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="CursorPositions">
<xs:complexType>
<xs:sequence>
<xs:element name="Textbox-X" type="xs:unsignedShort" />
<xs:element name="Textbox-Y" type="xs:unsignedShort" />
<xs:element name="SliderBegin-X" type="xs:unsignedShort" />
<xs:element name="SliderBegin-Y" type="xs:unsignedShort" />
<xs:element name="SubmitButton-X" type="xs:unsignedShort" />
<xs:element name="SubmitButton-Y" type="xs:unsignedShort" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Leider gibt es beim Testen immer {0,0}.
Weiß jemand, was los ist?
Oder haben Sie vielleicht eine Lösung?
PS: für diejenigen, die wissen wollen, funktioniert die Maus zu bewegen wie folgt aus:
private void MoveMouse(int X, int Y) {
Cursor.Position = new Point(X, Y);
mouse_event(MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0); // press left mouse button
mouse_event(MOUSEEVENTF_LEFTUP, X, Y, 0, 0); // release left mouse button
}
Sie müssen diesen Teil in der Spitze des Codes gehören:
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
public const int MOUSEEVENTF_LEFTDOWN = 0x0002;
public const int MOUSEEVENTF_LEFTUP = 0x0004;
public const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
public const int MOUSEEVENTF_RIGHTUP = 0x0010;
Was genau wollen Sie bauen? Es sollte einen anderen "besseren" Weg geben, dies zu tun. – Shoban
@Shoban Ich versuche, einen kleinen Bot zu machen. Ein Freund von mir hat es mit AutoIT gemacht, was ganz gut funktioniert. Aber ich möchte es in C# tun, als ein Projekt für mich – GroundZero
Meine Meinung: Dies ist nicht der beste Weg, um einen Bot zu bauen, d. H. Es Mauszeiger bewegen und Sachen klicken. Wie wäre es mit diff Auflösungen? Howabout restauriertes Fenster? Hast du das alles überprüft? Wie wäre es mit einem unerwarteten Alarm/Fenster durch andere Anwendungen? – Shoban