Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Подпрограммы или функции

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

1. Val_027 - 28 Февраля, 2020 - 08:29:57 - перейти к сообщению
Вот простенький код

win w1=window ("X1"Подмигивание;activate(w1);
mouse(LEFT,262,22,1,w1);mouse(LEFT,42,200,1,w1);sleep(300);mouse(LEFT,200,425,1,w1);

win w2=window ("X2"Подмигивание;activate(w2);
mouse(LEFT,262,22,1,w2);mouse(LEFT,42,200,1,w2);sleep(300);mouse(LEFT,200,425,1,w2);

win w3=window ("X3"Подмигивание;activate(w3);
mouse(LEFT,262,22,1,w3);mouse(LEFT,42,200,1,w3);sleep(300);mouse(LEFT,200,425,1,w3);

вот подскажите пожалуйста как оптимизировать код /подпрограмма с помощью функции/
и совсем шикарно протыкать все в перекрытых окнах. На пилоте у меня это получалось тут туплю по тяжёлой. Заранее спасибо.
2. Zireael - 28 Февраля, 2020 - 16:29:02 - перейти к сообщению
 Цитата:
как оптимизировать код /подпрограмма с помощью функции/

Если это поймёте, то остальное дописать не проблема будет.
CODE:
win w1=window ("X1");
win w2=window ("X2");

loop()
{
func(w1, 52, 99);
func(w2, 477, 46);
}

function func(win w, int x, int y)
{
mouse(LEFT, x, y, 1, w);
pause(500);
}

 Цитата:
протыкать все в перекрытых окнах.

Вместо mouse использовать sendmouse.
3. Val_027 - 29 Февраля, 2020 - 09:27:05 - перейти к сообщению
проблема будет.

win w1=window("X);activate(w1);
win w2=window("Y");
win w3=window ("Z");

f(w1,262,24);f(w1,42,204);f(w1,200,425);
f(w2,262,24);f(w2,42,204);f(w2,200,425);
f(w3,262,24);f(w3,42,204);f(w3,200,425);

function f(win w, int x, int y)
{sendmouse(LEFT, x, y,w);pause(500);}

Что и сказать /шаг вперед/ но видим же что повторяются коры
видать что то еще надо докрутить....
4. Zireael - 29 Февраля, 2020 - 09:50:35 - перейти к сообщению
Массивы и циклы для этого есть.
CODE:
win w[3];
w[0]=window("X");
w[1]=window("Y");
w[2]=window ("Z");


for(int i=0; i<3; i++)
{
f(w[i],262,24); f(w[i],42,204); f(w[i],200,425);
}


function f(win w, int x, int y)
{sendmouse(LEFT, x, y, w);pause(500);}
5. Val_027 - 29 Февраля, 2020 - 10:42:09 - перейти к сообщению
 Zireael пишет:
Массивы и циклы


Спасибо !!! просто у Вас все более понятно чем в примерах . на форумах там очень умно для меня... А?! Закатив глазки
6. Val_027 - 06 Марта, 2020 - 07:42:13 - перейти к сообщению
 Val_027 пишет:
циклы


Это работает !
win wo[10];

{wo[1]=window("q");wo[2]=window("w");wo[3]=window("e");wo[4]=window("r");
wo[5]=window("t");wo[6]=window("y");wo[7]=window("u");wo[8]=window("i");
wo[9]=window("p");
for(int s=0; s<10; s++){SL(wo[s],262,22,42,200,200,425);}

function SL(win wo,int x,int y,int x1,int y1,int x2,int y2)
{activate(wo);sleep(200);
sendmouse(LEFT,x,y,wo);sleep(200);sendmouse(LEFT,x1,y1,wo)
;sleep(100);sendmouse(LEFT,x2,y2,wo);sleep(100);}}

а вот подскажите можно ли в функцию размеры окна вставить и
//wo.leftclient = 0;wo.topclient = -5;wo.widthclient = 1920;
//wo.heightclient = 1058;activate(wo);moveclient(wo)

только это /activate(wo);/ можно вставить. на это /wo.leftclient = 0;/ уже ругается ?
7. Zireael - 06 Марта, 2020 - 08:03:39 - перейти к сообщению
Если нужно изменить позицию и размеры окна, то можно так:
CODE:
external(INT, "MoveWindow", "MoveWindow", "User32"); // в начало скрипта


win wo[2];
wo[0]=window ("Новый текстовый документ.txt – Блокнот", "Notepad", -1); // окно1
wo[1]=window ("Новый текстовый документ (2).txt – Блокнот", "Notepad", -1); // окно2


for(int s=0; s<sizearray(wo); s++)
{
if(wo[s])move_window(wo[s], 200, 50, 500, 300); // переметить окна в координаты 200 50 и изменить размер 500 300
else messagebox("Окно не найдено");
}

function move_window(win w, int X, int Y, int cx, int cy)
{
MoveWindow(formatwi(w), X, Y, cx, cy, 0);
}
8. Val_027 - 06 Марта, 2020 - 08:41:04 - перейти к сообщению
 Zireael пишет:
Если нужно

Да работает Спасибо. но интересный момент Пришлось координаты и размеры настраивать по новой..

external(INT, "MoveWindow", "MoveWindow", "User32"); win wo[10];

wo[0]=window("X");
wo[1]=window("y");
итд.

for(int s=0; s<sizearray(wo); s++)
{if(wo[s])move_window(wo[s], -8,-34,1936,1094);}

function move_window(win w, int X, int Y, int cx, int cy)
{MoveWindow(formatwi(w), X, Y, cx, cy, 0);}
9. Zireael - 06 Марта, 2020 - 08:59:24 - перейти к сообщению
 Цитата:
Пришлось координаты и размеры настраивать по новой..

Перемещается окно, а не клиент, можно так:
CODE:
external(INT, "MoveWindow", "MoveWindow", "User32");
external(INT, "GetWindowInfo", "GetWindowInfo", "User32");
int WINDOWINFO[15];
// всё что выше в начало скрипта

win wo[2];
wo[0]=window ("Новый текстовый документ.txt – Блокнот", "Notepad", -1); // окно1
wo[1]=window ("Новый текстовый документ (2).txt – Блокнот", "Notepad", -1); // окно2


for(int s=0; s<sizearray(wo); s++)
{
if(wo[s])move_client(wo[s], 200, 50, 500, 300);
else messagebox("Окно не найдено");
}


function move_client(win w, int X, int Y, int cx, int cy)
{
WINDOWINFO[0]=60;
GetWindowInfo(formatwi(w), address(#WINDOWINFO[0]));
MoveWindow(formatwi(w), X-(WINDOWINFO[5]-WINDOWINFO[1]), Y-(WINDOWINFO[6]-WINDOWINFO[2]), cx, cy, 0);
}

Powered by ExBB FM 1.0 Final