Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (2): [1] 2 »   

> Описание: Как реализовать скролл мыши в игре
CEMEH_054
Отправлено: 17 Июня, 2019 - 11:00:39
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2019  
Откуда: Новосибирск, Россия
Репутация: 0




Доброго времени. Есть желание реализовать скролл мыши по определенным параметрам.
к примеру:
if (выполнено такое действие) то скролл мыши вверх
else скролл мыши в низ

Пробую реализовать такое действие при скролле мыши:

win w=window (-1, -1, window ("Название окна", "UnityWndClass", -1));

mousewheel(-2); // скролл мыши на 2 щелчка в низ

function mousewheel(int delta)
{
sendmessage(WM_MOUSEWHEEL, delta);
}

Подскажите, что не так и как сделать правильно.
Скролл в активном окне.
 
 Top
Zireael
Отправлено: 17 Июня, 2019 - 11:21:50
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Скролл в активном окне.

CODE:
#define MOUSEEVENTF_WHEEL 2048
external(VOID, "mouse_event", "mouse_event", "user32.dll");

sleep(2000);
mousewheel(-2); // на 2 щелчка вниз
sleep(2000);
mousewheel(3); // на 3 вверх

function mousewheel(int delta)
{
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, delta * 120, 0);
}

Скролл в неактивном окне (не во всех приложениях сработает):
CODE:
win w=window (-1, "Edit", window (-1, "Notepad", -1)); // окно

int x=200; // координаты, в которых выполнить скролл
int y=300;

mousewheel(w, x, y, -2); // на 2 щелчка вниз
sleep(2000);
mousewheel(w, x, y, 3); // на 3 щелчка верх

function mousewheel(win w, int x, int y, int delta)
{
sendmessage(WM_MOUSEWHEEL, delta*120*65536, x+y*65536, w);
}
 
 Top
CEMEH_054
Отправлено: 17 Июня, 2019 - 11:37:41
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2019  
Откуда: Новосибирск, Россия
Репутация: 0




Zireael , Спасибо большое.
А что означает 2048?
#define MOUSEEVENTF_WHEEL 2048
 
 Top
Zireael
Отправлено: 17 Июня, 2019 - 11:56:41
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
А что означает 2048?
#define MOUSEEVENTF_WHEEL 2048

Это объявление константы.
CODE:
#define MOUSEEVENTF_WHEEL 2048
messagebox(MOUSEEVENTF_WHEEL);

Так можно понять что означает число. Просто флагов может быть несколько, например:
 Цитата:
external(VOID, "mouse_event", "mouse_event", "user32.dll" );
mouse_event(34816, 0, 0, 120, 0); // Так не понятно что означает 34816.

 Цитата:
#define MOUSEEVENTF_WHEEL 2048
#define MOUSEEVENTF_ABSOLUTE 32768
external(VOID, "mouse_event", "mouse_event", "user32.dll" );
mouse_event(MOUSEEVENTF_WHEEL | MOUSEEVENTF_ABSOLUTE, 0, 0, 120, 0);

А так можно открыть описание функции https://docs.microsoft.com/en-us...user-mouse_event и посмотреть какие флаги указаны и что они обозначают.
 
 Top
CEMEH_054
Отправлено: 17 Июня, 2019 - 12:24:30
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2019  
Откуда: Новосибирск, Россия
Репутация: 0




Zireael , Спасибо
 
 Top
Femidko
Отправлено: 23 Мая, 2020 - 18:12:11
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 28
Дата рег-ции: Май 2020  
Репутация: 0




Добрый вечер!
А не подскажете, в чем может быть причина такой ошибки?
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]

(Отредактировано автором: 23 Мая, 2020 - 18:12:58)

 
 Top
Zireael
Отправлено: 23 Мая, 2020 - 18:17:41
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
А не подскажете, в чем может быть причина такой ошибки?

Нужен весь код.
 
 Top
Femidko
Отправлено: 23 Мая, 2020 - 19:16:43
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 28
Дата рег-ции: Май 2020  
Репутация: 0




Все как Вы писали:

CODE:
#define MOUSEEVENTF_WHEEL 2048
#define MOUSEEVENTF_ABSOLUTE 32768

external(VOID, "mouse_event", "mouse_event", "User32.dll");

function MouseWheel(int delta)
{
mouse_event(MOUSEEVENTF_WHEEL | MOUSEEVENTF_ABSOLUTE, 0, 0, delta * 120, 0);
}

function Roll(win _win) {
activate(_win);
sleep(2000);
mousemove(20, 180, _win);
sleep(random(100, 500));
mouse(LEFT, random(20, 50), random(160, 200), 0, _win)
sleep(random(100, 500));
mouse(LEFT, random(20, 50), random(160, 200), 0, _win)
sleep(random(100, 500));

MouseWheel(-10);

}
 
 Top
Zireael
Отправлено: 23 Мая, 2020 - 19:29:35
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
mouse(LEFT, random(20, 50), random(160, 200), 0, _win)

Нет ; вконце.
CODE:
mouse(LEFT, random(20, 50), random(160, 200), 0, _win);
 
 Top
Femidko
Отправлено: 23 Мая, 2020 - 19:45:15
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 28
Дата рег-ции: Май 2020  
Репутация: 0




 Zireael пишет:
Нет ; вконце.

господи, как мог пропустить.... благодарствую, в очередной раз. сбило с толку, что на строчку с эвентом колесика ругалось наверн
(Добавление)
Не помогло. Сделал чистый эксперимент:
CODE:

#define MOUSEEVENTF_WHEEL 2048
#define MOUSEEVENTF_ABSOLUTE 32768
external(VOID, "mouse_event", "mouse_event", "User32.dll");
mouse_event(MOUSEEVENTF_WHEEL | MOUSEEVENTF_ABSOLUTE, 0, 0, delta * 120, 0);


то же самое
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by