Zireael |
Отправлено: 17 Июня, 2019 - 11:21:50
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Скролл в активном окне.
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);
} |
|
|
Zireael |
Отправлено: 17 Июня, 2019 - 11:56:41
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: А что означает 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 и посмотреть какие флаги указаны и что они обозначают. |
|
|
Femidko |
Отправлено: 23 Мая, 2020 - 19:16:43
|
Наблюдатель
Покинул форум
Сообщений всего: 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);
} |
|
|
Zireael |
Отправлено: 23 Мая, 2020 - 19:29:35
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: mouse(LEFT, random(20, 50), random(160, 200), 0, _win)
Нет ; вконце.
CODE:mouse(LEFT, random(20, 50), random(160, 200), 0, _win); |
|
|
Femidko |
Отправлено: 23 Мая, 2020 - 19:45:15
|
Наблюдатель
Покинул форум
Сообщений всего: 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);
то же самое |
|
|
|