Kibor |
Отправлено: 19 Августа, 2020 - 12:01:44
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Добавил прокрутку ролика мыши в mouse и sendmouse
Для прокрутки ролика мыши необходимо первым параметром указать WHEEL
Пример прокрутки в активном окне:
Прокручивает на 2 щелчка вверх
Прокручивает на 2 щелчка вниз
Так же само прокручивает в активном окне.
3 параметр указывает:
0 - не активировать окно с указателем в 4 параметре w
1 - перед прокруткой активировать окно с указателем в 4 параметре w
Указатель надо давать на главное окно, а не на контрол в котором есть скролл, так как активируется главное окно, а не контрол.
CODE:mouse(WHEEL, 2, 1, w);
================================
Прокрутка в не активном окне:
В данном случае третьим параметром надо давать указатель на контрол в котором есть скролл, так как сообщение передается скролу, а не главному окну.
CODE:sendmouse(WHEEL, -2, w);
=============================================
Пояснение по поводу указателей.
На примере блокнота.
Блокнот имеет главное окно и контрол EDIT , который расположен на главной форме и в котором есть сролл.
В шпионе Кибор вверху будет указатель на главную форму, внизу на контролл.
Для mouse надо давать указатель на главную форму. Для sendmouse на контролл.
CODE:win w=window (-1, "Notepad", -1); // Указатель на главную фому
mouse(WHEEL, -2, 1, w);
pause(1000);
CODE:win w=window (-1, "Edit", window (-1, "Notepad", -1)); // Указатель на контролл
sendmouse(WHEEL, -2, w);
pause(1000); |
|
|
Flash |
Отправлено: 27 Сентября, 2020 - 00:14:00
|
Участник
Покинул форум
Сообщений всего: 57
Дата рег-ции: Нояб. 2015
Откуда: Лангепас
Репутация: 0
|
[quote=Zireael][quote]
Да я хотел прицел перемещать в зависимости о ситуации. И догадался)) можно же int в отрицательную величину отнимать.
int col, x, y;
getdisplay(col, x, y);
int color[1][1];
color[0][0]=255;
int razmer=1000;
int k=-300; // -300 по x
primer();
messagebox("точка с лево");
k=300;// +300 по x
disablevisualwindow(0);update(-1);
primer();
messagebox("точка с право");
function primer()
{
visualwindow(0, 0, 0, 1, 1, x/2+k, y/2, razmer, #color[0][0]);
}
а я там городил 2 функции primer() и на плюс и на минус. К томуже у меня несколько visualwindow
(Добавление)
Доброго времени, есть игра (шутер) но send(mouse/key) не работают это может быть связано с античитом? Ни в полном экране не работает ни в окне. Но с окном могу работать (переименовать сдвиг и т.д) а send(mouse/key) не работает.(Отредактировано автором: 27 Сентября, 2020 - 00:33:53) |
|
|
Zireael |
Отправлено: 17 Ноября, 2020 - 00:44:06
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как между нажатиями кнопки сделать паузу 50-150 ?
CODE:pause(3000); // пауза чтобы переключиться на окно, в котором напечатать текст
_key("qwert", 100); // текст, пауза
function _key(string text, int wait)
{
char c_text[999];
strcpy(#c_text[0], text);
int size_text = size(text);
for(int i=0; i<size_text; i++)
{
key(c_text[i]);
sleep(wait);
}
} |
|
|
Zireael |
Отправлено: 23 Ноября, 2020 - 12:31:57
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: sendmouse(WHEEL, -2, w); нет параметров указания в каком именно месте делать скролл?
CODE:external(INT, "ClientToScreen", "ClientToScreen", "User32.dll");
win w=window ("TheRender", "RenderWindow", window ("LDPlayer", "LDPlayerMainFrame", -1)); // окно
if(w) // если окно найдено
{
int x=500; // координата X
int y=400; // координата Y
mousewheel(w, x, y, -2); // на 2 щелчка вниз
sleep(2000);
mousewheel(w, x, y, 3); // на 3 щелчка верх
}
else messagebox("Окно не найдено");
function mousewheel(win w, int x, int y, int delta)
{
int Point[2];
Point[0] = x; Point[1] = y;
ClientToScreen (formatwi(w), address(#Point[0]));
sendmessage(WM_MOUSEWHEEL, delta*120*65536, Point[0]+Point[1]*65536, w);
} |
|
|
|