A
>A1RN1kE<
Original poster
Добрый день!
В данной статье пойдет речь о том, как сделать Бота для Point Blank.
Что нам потребуется :
- Microsoft Visual Studio 2010
- Easy Macro Recorder 4.2
И так, всем иногда приходила в голову идея сделать "бота", который за вас бы качался. Да, есть определенные программы, которые заменяют ниже мною написанное, но у нас будет возможность настраивать данный бот "как хочешь", можно всякие возможности добавить. Т.е мы будем подстраивать под себя.
Первая часть.
Мы хотим, что бы данный бот делал движения мышкой + управлял нажатием клавиш.
Для управлением мышкой нам потребуется идентификатор окна, в котором будет управление.
Я не стал замарачиваться с поиском окна. К тому же, фрост скрывает его, хоть и есть несколько способов обойти это, я решил пойти намного легким путем.
Я создал фейковое окно. Создал форму, положил панель1 на форму, сделал прозрачным центр и установил положение окна при включении - Maximized.
Детально все описывать не буду. Готовый проект (под названием - "Посмотреть вложение 262")
Вторая часть.
Добавляем в файле Form1.cs ссылки на библиотеку:
Код:
using System.Runtime.InteropServices;
Код:
//SendMessage - отправляет сообщение для приложения (окна).
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
static int GetParamFromButton(MouseButtons btn)
{
switch (btn)
{
case MouseButtons.Left: return 0x0001;
case MouseButtons.Middle: return 0x0010;
case MouseButtons.Right: return 0x0002;
default: throw new Win32Exception("Невозможно преобразовать значение!");
}
}
public static void MouseClick(IntPtr hWnd, MouseButtons btn, int x, int y , int Sleep)
{
int xyPoint = MAKELONG(x, y);
int wParam = GetParamFromButton(btn);
SendMessage(hWnd, (int)btn, wParam, xyPoint);
System.Threading.Thread.Sleep(Sleep);
SendMessage(hWnd, (int)btn + 1, wParam, xyPoint);
}
void KeysPress(string key,int sleep)
{
SendKeys.Send(key);
System.Threading.Thread.Sleep(sleep);
// SendKeys.Send(key);
}
Еще ниже после этого как вставили предыдущий код, вставляем:
Код:
[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
private const int WM_KEYUP = 0x0002;//Отжимает клавишу
private const int WM_KEYDOWN = 0x0001;//Нажимает клавишу
Третья часть.
Скачиваем программку "Easy Macro Recorder 4.2 + ".
Устанавливаем, запускаем, регистрируемся.
Устанавливаем софт клавиши для управления
Скрин
1. - Софт клавиша для записи
2. - Софт клавиша для остановки записи.
3. - Ок, сохраняет
Записываем то, что хотите, что бы потом бот повторял.
Затем, сохраняем файл с макросом и открываем его через "блокнот". Видим вот такое:
где :
MouseMove 1273,561 - движение мышки до позиции (X = 1273, Y = 561)
Wait 16 - 16 миллисекунд ничего не делается.
KeyDown j - зажатие клавиши j
Wait 140 - продолжительность действия (в миллисекундах)
KeyUp j - отжатие клавиши (прекращает нажатие).
Немного разобравшись мы сможем понять, что каждое нажатие клавиши - состоит из 3х действий
Макроса от Easy Macro Recorder , который делает два действия - это переводит мышку по координатам X,Y и нажимает клавишу левой кнопки мыши (1 секунду = 1000 миллисекунд) :
Код:
LButtonUp [COLOR=#00FF00]867,714[/COLOR]
Wait [COLOR=#00FFFF]234[/COLOR]
LButtonDown [COLOR=#00FF00]867,714[/COLOR]
234 - продолжительность зажатия левой кнопки мыши (в миллисекундах)
В С# это будет выглядеть так:
Код:
MouseClick([COLOR=#FFD700]panel1.Handle[/COLOR], MouseButtons.Left, [COLOR=#00FFFF]867[/COLOR], [COLOR=#00FF00]714[/COLOR], [COLOR=#FF0000]234[/COLOR]);
714 - координаты по оси Y.
234 - задержка в миллисекундах.
panel1.Handle - Идентификатор окна.
Вот такое будет управление мышью.
Управление клавиатурой:
Опять же думаю, показать на примере.
В Easy Macro Recorder будет выглядеть так:
Код:
KeyDown n
Wait 78
KeyUp n
в C#:
Код:
KeysPress("'N",78);
Теперь поговорим о фросте и его способности - "скрывать окно".
Для этого, я в начале темы и затронул эту тему. Но это все решено
вставляем в файл "Form1.cs":
Код:
public static FormFakeWindow Ffw = new FormFakeWindow();
После этого, можем вставлять в функции вот это:
Код:
MouseClick([COLOR=#FFD700]Ffw.panel1.Handle[/COLOR], MouseButtons.Left, 867, 714, 234);
Вот и все...
Особая благодарность ''Mathers''