Я делаю маленького бота на C#.
На данный момент он работает очень хорошо, он может загружать текст из файла и набирать его для вас.Чтение переменных из XML для перемещения мыши
Я хотел бы поделиться программой с друзьями. Но я спотыкаюсь о проблемах.
По мере изменения разрешения кнопки и текстовые поля меняют положение.
Вот почему я хотел бы разрешить моим друзьям писать указатель мыши - это XML-файл, который я загружаю в свою программу.
Для загрузки в переменные, я использую этот скрипт:
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;
}
}
И это мой XML-файл:
<?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>
Зонирование выглядит следующим образом:
<?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>
К сожалению, при тестировании это всегда возвращает {0,0}.
Кто-нибудь знает, что случилось?
Или, может быть, у вас есть решение?
PS: для тех, кто хочет знать, перемещая мышь работает следующим образом:
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
}
Вам необходимо включить эту часть в верхней части кода:
[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;
Что именно вы пытаетесь построить? Должен быть какой-то другой «лучший» способ сделать это. – Shoban
@Shoban Я пытаюсь сделать маленького бота. Мой друг сделал это с помощью AutoIT, который работает очень хорошо. Но я хочу сделать это на C#, как проект для себя. – GroundZero
Мое мнение: Это не лучший способ создать бота, чтобы он двигал курсором мыши и нажимал на него. Как насчет разностных разрешений? Howabout восстановил окно? Вы проверяете все это? Как насчет неожиданного оповещения/окна другими приложениями? – Shoban