Я делаю маленького бота на C #.
На данный момент он работает довольно хорошо, он может загрузить текст из файла и набрать его для вас.
Я бы хотел поделиться программой с моими друзьями. Но я наткнулся на небольшую проблему.
При изменении разрешения кнопки и текстовые поля меняют положение.
Именно поэтому я бы хотел, чтобы мои друзья написали позицию мыши в виде 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;