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

Регистрация
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"); // отпускаем лкм в конечной точке
 
Последнее редактирование:
Что за урлы в коде? :D
А говорил копипастить умеешь))
 
  • Спасибо
Реакции: ssXXXss и masterLomaster
C#:
Развернуть Свернуть Копировать
HtmlElement he = tab.FindElementById("mc-canvas"); // в активной вкладке ищем нужный элемент по id
int leftintab = int.Parse(he.GetAttribute("leftintab")); // получаем значение leftintab элемента
int topintab = int.Parse(he.GetAttribute("topintab")); // получаем значение topintab элемента
с этим разобрался.
 
Что за урлы в коде? :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
C#:
Развернуть Свернуть Копировать
HtmlElement he = tab.FindElementById("mc-canvas");
Подскажите как взять значение не по id , а по классу (прописать к примеру 2 совпадение) либо по атрибутам
 
Подскажите как взять значение не по id , а по классу (прописать к примеру 2 совпадение) либо по атрибутам
Самое простое: Создаешь стандартный кубик через конструктор действий > Правый клик на нем > Конвертировать в C# > Вставляешь в C#
 
  • Спасибо
Реакции: masterLomaster
Самое простое: Создаешь стандартный кубик через конструктор действий > Правый клик на нем > Конвертировать в C# > Вставляешь в C#
это я и так активно использую помимо копипаста на форуме )))
еще и кодкрэйт юзаю, чтобы понять как и что работает!
 
это я и так активно использую помимо копипаста на форуме )))
еще и кодкрэйт юзаю, чтобы понять как и что работает!
Юзай XPATH -
Код:
Развернуть Свернуть Копировать
HtmlElement element = instance.ActiveTab.FindElementByXPath("//div[contains(@class,\"some-class\")]",0);
 
Вот еще сниппет рандом эмуляция движения мыши, может кому пригодится, не помню, откуда то с форума

Код:
Развернуть Свернуть Копировать
// 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.
Если немного проскролить, то у меня код не работает, тыкает ниже чем координаты элемента, в чем может быть причина?
 

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