Эмуляция движения мыши

Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
пусть будет тут! я кое что знаю по этой, но многого не знаю да еще и забываю постоянно ) а постоянно переспрашивать уже надоело, искать по форуму разные куски тоже! Лучше добавлю этот топик в избранное!

эмуляция мыши в одной точке
C#:
int x = int.Parse(project.Variables["peremen"].Value); //передаем координаты по Х в переменной
int y = int.Parse(project.Variables["peremen1"].Value); //передаем координаты по У в переменной
int ms = int.Parse(project.Variables["peremen2"].Value); // таймаут от точки до точки
// create points
Point[] points = new Point[1]
{
new Point(x, y)
};
// create delay
int[] delay = new int[1] { ms };
// perform the mouve move events
instance.ActiveTab.MouseMove(points, delay, false);
что означают delay, false - пока я сам не знаю )))
как в код выше добавить следующую точку тоже пока неизвестно мне )))

можно так если не нужно передавать координаты в переменных
C#:
int x = 100;
int y = 100;
int ms = 100;
// create points
Point[] points = new Point[1]
{
new Point(x, y)
};
// create delay
int[] delay = new int[1] { ms };
// perform the mouve move events
instance.ActiveTab.MouseMove(points, delay, false);
можно задать точки таким образом
C#:
instance.ActiveTab.MouseMove (2, 250, 300, 20);
//instance.ActiveTab.MouseMove (х1, у1, х2, у2);
можно задавать сразу несколько строк такого вида
C#:
//задавая в каждой строке новые координаты
instance.ActiveTab.MouseMove (х1, у1, х2, у2);
instance.ActiveTab.MouseMove (х1, у1, х2, у2);
instance.ActiveTab.MouseMove (х1, у1, х2, у2);
// можно так организовать, чтобы задать движение по точкам
instance.ActiveTab.MouseMove (х1, у1, х2, у2);
instance.ActiveTab.MouseMove (х2, у2, х3, у3);
instance.ActiveTab.MouseMove (х3, у3, х4, у4);
instance.ActiveTab.MouseMove (х4, у4, х5, у5);
instance.ActiveTab.MouseMove (х5, у5, х6, у6);
C#:
// если стоит true то будет клик по объекту в конечной точке
instance.ActiveTab.MouseMove(2, 250, 551, 268, true);
кодик для примера от @Dimionix
Когда-то для букса wad.ojooo.com делал разгадывание каптчи. Там нужно было зажимать лкм и "рисовать" фигуры.
Вот, например, код, который ищет нужный элемент на странице, берет его координаты, зажимает лкм, рисует букву "V" с некоторым рандомом и затем отпускает лкм.
за что ему спасибо! :ay:
C#:
Tab tab = instance.ActiveTab;
HtmlElement he = tab.FindElementById("text"); // в активной вкладке ищем нужный элемент по id
int leftintab = int.Parse(he.GetAttribute("leftintab")); // получаем значение leftintab элемента
int topintab = int.Parse(he.GetAttribute("topintab")); // получаем значение topintab элемента
Random rnd = new Random();
int X = leftintab + rnd.Next(-2, 3);
int Y = topintab + rnd.Next(-2, 3);
tab.MouseClick(X + 66, Y + 18, "left", "down"); // зажимаем лкм в нужной точке
Point[] points = new Point[13]
{
  new Point(X + 66, Y + 18),
  new Point(X + 74, Y + 32),
  new Point(X + 80, Y + 42),
  new Point(X + 88, Y + 54),
  new Point(X + 96, Y + 68),
  new Point(X + 100, Y + 76),
  new Point(X + 106, Y + 92),
  new Point(X + 110, Y + 76),
  new Point(X + 114, Y + 68),
  new Point(X + 124, Y + 54),
  new Point(X + 130, Y + 42),
  new Point(X + 136, Y + 36),
  new Point(X + 144, Y + 24)
};
int[] delay = new int[13]
{
  rnd.Next(10, 21), rnd.Next(10, 21), rnd.Next(10, 21),
  rnd.Next(10, 21), rnd.Next(10, 21), rnd.Next(10, 21),
  rnd.Next(10, 21), rnd.Next(10, 21), rnd.Next(10, 21),
  rnd.Next(10, 21), rnd.Next(10, 21), rnd.Next(10, 21),
  rnd.Next(10, 21)
};
tab.MouseMove(points, delay);
tab.MouseClick(X + 144, Y + 24, "left", "up"); // отпускаем лкм в конечной точке
 
Последнее редактирование:

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Что за урлы в коде? :D
А говорил копипастить умеешь))
 
  • Спасибо
Реакции: ssXXXss и masterLomaster
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
C#:
HtmlElement he = tab.FindElementById("mc-canvas"); // в активной вкладке ищем нужный элемент по id
int leftintab = int.Parse(he.GetAttribute("leftintab")); // получаем значение leftintab элемента
int topintab = int.Parse(he.GetAttribute("topintab")); // получаем значение topintab элемента
с этим разобрался.
 
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Что за урлы в коде? :D
А говорил копипастить умеешь))
вот я и хотел спросить зачем ты натолкал что попало ?

этот кусок за что отвечает?
C#:
Random rnd = new Random();
int X = leftintab + rnd.Next(-2, 3);
int Y = topintab + rnd.Next(-2, 3);

и этот кусок за что отвечает?
C#:
rnd.Next(10, 21), rnd.Next(10, 21), rnd.Next(10, 21),
  rnd.Next(10, 21), rnd.Next(10, 21), rnd.Next(10, 21),
  rnd.Next(10, 21), rnd.Next(10, 21), rnd.Next(10, 21),
  rnd.Next(10, 21), rnd.Next(10, 21), rnd.Next(10, 21),
  rnd.Next(10, 21)
C#:
Point[] points = new Point[13]
{
  new Point(X + 66, Y + 18),
  new Point(X + 74, Y + 32),
  new Point(X + 80, Y + 42),
  new Point(X + 88, Y + 54),
  new Point(X + 96, Y + 68),
  new Point(X + 100, Y + 76),
  new Point(X + 106, Y + 92),
  new Point(X + 110, Y + 76),
  new Point(X + 114, Y + 68),
  new Point(X + 124, Y + 54),
  new Point(X + 130, Y + 42),
  new Point(X + 136, Y + 36),
  new Point(X + 144, Y + 24)
};
int[] delay = new int[13]
это как я понял точки по которым курсор двигает?
если указать в new Point[6]
и прописать 6 строк new Point(X + 66, Y + 18-),
то отработает всего 6 точек?

в new Point(X + 66, Y + 18-), - цифры 66 и 18 это смещение о основных координат?
 
Последнее редактирование:
  • Спасибо
Реакции: Mikhail B. и Dimionix
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
C#:
HtmlElement he = tab.FindElementById("mc-canvas");
Подскажите как взять значение не по id , а по классу (прописать к примеру 2 совпадение) либо по атрибутам
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Подскажите как взять значение не по id , а по классу (прописать к примеру 2 совпадение) либо по атрибутам
Самое простое: Создаешь стандартный кубик через конструктор действий > Правый клик на нем > Конвертировать в C# > Вставляешь в C#
 
  • Спасибо
Реакции: masterLomaster
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
Самое простое: Создаешь стандартный кубик через конструктор действий > Правый клик на нем > Конвертировать в C# > Вставляешь в C#
это я и так активно использую помимо копипаста на форуме )))
еще и кодкрэйт юзаю, чтобы понять как и что работает!
 

updeal

Client
Регистрация
16.01.2017
Сообщения
1
Благодарностей
0
Баллы
1
это я и так активно использую помимо копипаста на форуме )))
еще и кодкрэйт юзаю, чтобы понять как и что работает!
Юзай XPATH -
Код:
HtmlElement element = instance.ActiveTab.FindElementByXPath("//div[contains(@class,\"some-class\")]",0);
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Вот еще сниппет рандом эмуляция движения мыши, может кому пригодится, не помню, откуда то с форума

Код:
// create points

Point[] points = new Point[96]

{   new Point(314,379),

    new Point(310,379),

    new Point(313,376),

    new Point(317,372),

    new Point(320,369),

    new Point(324,365),

    new Point(327,362),

    new Point(327,358),

    new Point(331,358),

    new Point(331,355),

    new Point(334,355),

    new Point(334,358),

    new Point(334,361),

    new Point(338,361),

    new Point(338,365),

    new Point(341,368),

    new Point(341,372),

    new Point(345,372),

    new Point(348,379),

    new Point(348,382),

    new Point(352,382),

    new Point(352,386),

    new Point(355,386),

    new Point(355,389),

    new Point(355,393),

    new Point(359,396),

    new Point(362,400),

    new Point(366,403),

    new Point(366,407),

    new Point(369,410),

    new Point(373,410),

    new Point(373,414),

    new Point(376,417),

    new Point(380,417),

    new Point(383,421),

    new Point(383,424),

    new Point(387,428),

    new Point(387,431),

    new Point(390,435),

    new Point(394,438),

    new Point(397,438),

    new Point(397,442),

    new Point(401,445),

    new Point(404,449),

    new Point(408,452),

    new Point(411,456),

    new Point(415,456),

    new Point(415,459),

    new Point(418,463),

    new Point(422,466),

    new Point(425,470),

    new Point(429,473),

    new Point(432,477),

    new Point(436,480),

    new Point(439,480),

    new Point(443,480),

    new Point(443,484),

    new Point(446,487),

    new Point(450,487),

    new Point(453,491),

    new Point(457,494),

    new Point(460,498),

    new Point(464,501),

    new Point(467,505),

    new Point(474,508),

    new Point(478,512),

    new Point(485,512),

    new Point(488,519),

    new Point(495,519),

    new Point(499,522),

    new Point(502,526),

    new Point(506,526),

    new Point(513,526),

    new Point(516,529),

    new Point(520,529),

    new Point(523,533),

    new Point(527,533),

    new Point(534,536),

    new Point(537,536),

    new Point(544,536),

    new Point(548,536),

    new Point(555,540),

    new Point(562,540),

    new Point(569,543),

    new Point(576,543),

    new Point(583,543),

    new Point(593,547),

    new Point(600,547),

    new Point(604,547),

    new Point(611,547),

    new Point(618,547),

    new Point(621,547),

    new Point(625,547),

    new Point(632,547),

    new Point(635,547),

    new Point(639,547)

};

// create delay      {

int[] delay = new int[97]  { 10, 20, 40, 10, 70, 20, 20, 40, 10, 30, 10, 20, 40, 10, 70, 20, 20, 40, 10, 30, 10, 20, 40, 10, 70, 20, 20, 40, 10, 30, 10, 20, 40, 10, 70, 20, 20, 40, 10, 30, 10, 20, 40, 10, 70, 20, 20, 40, 10, 30, 10, 20, 40, 10, 70, 20, 20, 40, 10, 30, 10, 20, 40, 10, 70, 20, 20, 40, 10, 30, 10, 20, 40, 10, 70, 20, 20, 40, 10, 30, 10, 20, 40, 10, 70, 20, 20, 40, 10, 30, 10, 20, 40, 10, 70, 20, 20 };

// perform the mouve move events

instance.ActiveTab.MouseMove(points, delay, false);
 
  • Спасибо
Реакции: Dimson, doc и Mikhail B.

Redsmokky

Client
Регистрация
06.10.2015
Сообщения
313
Благодарностей
195
Баллы
43
Если немного проскролить, то у меня код не работает, тыкает ниже чем координаты элемента, в чем может быть причина?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)