Добрый день!
Решил посмотреть на Вебивизоре, как работает команда mouse.send_move(). Использую последнюю версию на C#
0:16
0:42
1:09
Как видно, что точка начала движения к mouse.send_move(x,y) всегда одна и таже.
Как можно указывать точку начала движения или XHE может запоминать последнее расположение мышки?
Короче, как с этим бороться?
Работа с mouse.send_move()
Re: Работа с mouse.send_move()
Спасибо,исправим эту ситуацию в следующей версии (ввйдет к концу недели)
Сейчас - движение начинается с реальной позиции курсора, будет введена виртуальная для операций мыши.
Сейчас бороться можно переписав функцию :
public bool send_move(int x, int y, bool scroll = true, int time = 0, int tremble = 5) в файле xhe_mouse.cs
начальная точка задается сейчас здесь:
Сейчас - движение начинается с реальной позиции курсора, будет введена виртуальная для операций мыши.
Сейчас бороться можно переписав функцию :
public bool send_move(int x, int y, bool scroll = true, int time = 0, int tremble = 5) в файле xhe_mouse.cs
Код: Выделить всё
// отправить перемещение мыши в заданную точку
public bool send_move(int x, int y, bool scroll = true, int time = 0, int tremble = 5)
{
if (time == 0)
{
string[,] aParams = new string[,] { { "x", x.ToString() }, { "y", y.ToString() }, { "scroll", scroll.ToString() } };
return call_boolean(GetCurrentMethod(), aParams);
}
else
{
double xc = get_x();
double yc = get_y();
double StepX = (x - xc - 0.0001) / time / 50;
double StepY = (y - yc - 0.0001) / time / 50;
double prevRandX = 0; int prevRandY = 0;
for (int i = 0; i < 50 * time - 1; i++)
{
xc += StepX - prevRandX;
yc += StepY - prevRandY;
prevRandX=new Random().Next(-tremble,tremble);
prevRandY = new Random().Next(-tremble, tremble);
string[,] aParams = new string[,] { { "x", xc.ToString() }, { "y", yc.ToString() }, { "scroll", scroll.ToString() } };
call_boolean(GetCurrentMethod(), aParams);
Thread.Sleep(20);
}
string[,] aParams1 = new string[,] { { "x", x.ToString() }, { "y", y.ToString() }, { "scroll", scroll.ToString() } };
return call_boolean(GetCurrentMethod(), aParams1);
}
}
Код: Выделить всё
double xc = get_x();
double yc = get_y();
Re: Работа с mouse.send_move()
Есть еще проблемка - $mouse->send_left_button_down отправленное во фрейм срабатывает как клик, точнее "не держит", а вот $mouse->left_button_down работает как надо, легко проверить на капче аюахуман, проверил сейчас на последней версии. Мне лично уже не надо, мож кому в будущем пригодится.
Re: Работа с mouse.send_move()
Спасибо, исправимoleg88889 писал(а):Есть еще проблемка - $mouse->send_left_button_down отправленное во фрейм срабатывает как клик, точнее "не держит", а вот $mouse->left_button_down работает как надо, легко проверить на капче аюахуман, проверил сейчас на последней версии. Мне лично уже не надо, мож кому в будущем пригодится.
Re: Работа с mouse.send_move()
Команда mouse.send_move(x,y);
Проверял на Вебивизоре яндекса и записал видео для Вас.
https://dropmefiles.com/DHD48
Как я понял, если нужно мышку передвинуть в отображаемую часть страницы, то он ведет от последней координаты.
А если в не отображаемую. то он ведет с верха страницы
Проверял на Вебивизоре яндекса и записал видео для Вас.
https://dropmefiles.com/DHD48
Как я понял, если нужно мышку передвинуть в отображаемую часть страницы, то он ведет от последней координаты.
А если в не отображаемую. то он ведет с верха страницы
Re: Работа с mouse.send_move()
Спасибо, сразу посоле праздников займусь. попробуем исправить в следующей версии