Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 4.04 Установка прозрачности окон программ. Невидимость окон для мыши.

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

1. Kibor - 14 Марта, 2015 - 17:37:09 - перейти к сообщению
transparency позволяет установить прозрачность для любых окон в системе.
прозрачность устанавливается от 0 до 100 процентов видимости.

так же с помощью transparency можно не только сделать визуально невидимым окно, но и полностью сделать его прозрачным для мыши. то есть как будто оно свернутое.. и в то же время иметь возможность работать с его изображением в фоновом режиме как с перекрытым.

синтаксис
 Цитата:
transparency (20, w);

первый - процент видимости или -1. если -1 окно будет не только не видимым визуально, но и не видимым для мыши. можно щелкать через него. как будто нет окна..
второй - на окно указатель

возвращает 1 при удаче. меньше 1 при не удаче.

допускается управление разными окнами по отдельности через указатели, или управление всеми ранее управляемыми окнами вызовом transparency без указателя. только с процентом прозрачности или -1.
 Цитата:
transparency (100);

вернет всем окнам ранее поменяным полную видимость.

пример. запустить калькулятор и блокнот. все кроме них свернуть что бы они одни на рабочем столе были. за ними расположить ярлыки любые. для теста.

CODE:
win w=window ("Калькулятор", "CalcFrame", -1);//эт калькулятор
win w1=window ("Безымянный — Блокнот", "Notepad", -1);//а эт блокнот


transparency (0, w1);//делаем блокнот полностию прозрачным, но он не дает кликать по задним окнам
transparency (50, w);//делаем калькулятору 50 проц прозрачности
messagebox ("блокнот полностью прозрачным, но он не дает кликать по задним окнам. калькулятор 50 проц прозрачности");


transparency (10, w1);//делаем блокнот 10 проц прозрачности
transparency (-1, w);//делаем калькулятору полностью прозрачным, и разрешаем кликать через него. то есть как будто его нет вообще
messagebox ("блокнот 10 проц прозрачности, калькулятор полностью прозрачным, и разрешаем кликать через него.");

visualwindow(0, 17, 2, 195, 246, 30, 50 , 100, w);//получаем изображение в прозрачном калькуляторе на который не реагирует мышь. то есть как будто свернут
messagebox ("получаем изображение в прозрачном калькуляторе на который не реагирует мышь. как свернутый");

transparency (100);
messagebox ("вернули всему видимость");



а этот пример покажет как с помощью нажатия Ё можно сделать видимость сворачивания браузера или любой программы с сохранением получения его изображения

 Цитата:
win w;
int x, y;
int prozr=0;

getmouse(x, y);
w=getwindow(1, x, y);//или w=getwindow(0, x, y); зависит от программы
if (w==0){messagebox ("error. запускать б мышь была над чем то..");goto er;}

visualwindow(0, 17, 2, 195, 246, 30, 50 , 100, w);


l: if (prozr==0)
{
if (getkeystate(192)==1)
{
prozr=1;
transparency (-1, w);
kk: if (getkeystate(192)==1){sleep(20); goto kk;}
}
}
else
{
if (getkeystate(192)==1)
{
prozr=0;
transparency (100, w);
kk1: if (getkeystate(192)==1){sleep(20); goto kk1;}
}
}
sleep(50);
goto l;
er:;


это дает возможность строить таких ботов
2. Skycrew - 15 Марта, 2015 - 04:46:14 - перейти к сообщению
Отличная возможность! Спасибо!
3. AdryV - 03 Августа, 2016 - 06:47:54 - перейти к сообщению
 Kibor пишет:
а этот пример покажет как с помощью нажатия Ё можно сделать видимость сворачивания браузера или любой программы с сохранением получения его изображения

но я так понимаю что в этот же момент отваливается определение курсора getcursor() или attach(w, 1)?
тоисть пока окно активно все работает, как только перехожу на другое окно что то из двух выше перечисленных перестает работать, предполагаю что attach, возможно ли реализовать что бы не отваливался?
даже когда делаю окно поверх всех остальных(левым софтом) при -1 отваливается
при 0-100 все нормально
(Добавление)
 AdryV пишет:
при 0-100 все нормально

если окно поверх всех(левым софтом)
(Добавление)
как я понял transparency -1 делает окно полностью не активным как в Actual Window Manager... из-за этого mousemove на него не действует? есть ли выход?
4. Kibor - 03 Августа, 2016 - 11:01:20 - перейти к сообщению
а проверьте что возвращает attach..
при не активном. ему все равно.

а в игре меняется курсор? в не активном..
5. AdryV - 03 Августа, 2016 - 12:24:33 - перейти к сообщению
 Kibor пишет:
а в игре меняется курсор? в не активном..

если активировано transparency -1, хоть активно окно хоть нет курсор меняется(на стандартный винды), и бегает по координатам...
но вот сейчас провел 10 тестов(по 2-5мин) из 10, 5 раз не отвалилось 2 раза отвалилось спустя 30 сек после перекрытия окном, и 3 раза отвалилось после захода в браузере где много флеша или видео
 Kibor пишет:
а проверьте что возвращает attach..

эммм можно пример как отловить Улыбка
6. Kibor - 03 Августа, 2016 - 12:35:38 - перейти к сообщению
CODE:
win w=window ("Калькулятор", "CalcFrame", -1);
a: if (attach(w, 1)==1)
{
pause(1000);
attach(w, 0);
goto a;
}

messagebox ("все..");

если нет сообщения все хорошо.
7. AdryV - 04 Августа, 2016 - 00:19:44 - перейти к сообщению
 Kibor пишет:
если нет сообщения все хорошо.

нет сообщений...
станности какието... вчера вечером все работало отлично... скрыл окно и все работало в течении 30 минут смотрел фильм на весь экран
сегодня с утра по новой все запустил уже не работает при скрытии окна что бы не делал... работает лишь 30сек до 1 минуты и все перестает активировать атаку, скрипт ошибки не выдал...
если будет у вас время взгляните на код... может у меня там ошибка о которой я не знаю..
вот весь код
8. Kibor - 04 Августа, 2016 - 04:19:52 - перейти к сообщению
не вижу..
но разбейте строку
 Цитата:
createdialog(0, EDIT, #pos_size_edit0[0][0], #text_edit0[0] | CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0] | COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0] | BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);

на
 Цитата:
createdialog(0, EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0] |
COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0] |
BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);


Могут быть проблемы с ней.

Есть проблема...

В таймере используются переменные которые есть используются в коде. Нельзя.
К примеру..
В коде есть код..
 Цитата:
if (baf==0){for(n=8; n<24; n++){t[n]=gettime();}baf=1;}

Цикл идет.. И вдруг он прервался для таймера
а в нем есть код
 Цитата:
for(n=0; n<8; n++)
{
if (flag_check0[n]==1)//проверка галок
{

что будет когда управление вернется в место где скрипт прервался на таймер? Что в n тогда будет?
И как продолжится цикл в коде
 Цитата:
if (baf==0){for(n=8; n<24; n++){t[n]=gettime();}baf=1;}
9. AdryV - 06 Августа, 2016 - 03:49:03 - перейти к сообщению
эх как я понял при transparency -1, движение мыши происходит, но не может определить курсор.
также с findimage не может найти изображение,
так как игра клиент думает что она свернута или в ожидании... запустил через програмку зерколо игры, в нем видно что курсор бегает по клиенту даже мобы подсвечиваются но над ними не появляется показатель жизни...
походу такоеже и с определением курсора...
даже если transparency = 0 прозрачное но окно перекрыто полностью то не работает
в общем думаю это не реализуемо....

так что решил сделать чет типа
CODE:
function trusit_sendmouse(int tx, int ty)
{
if (stop==0)
{

if(transparency(-1, w) ==1)//если окно скрыто то выполнить
{
activate(w);
transparency (0, w);
}

mousemove(tx+st_poisk_X+1, ty+st_poisk_Y, w);sleep(p);
mousemove(tx+st_poisk_X-1, ty+st_poisk_Y, w);sleep(p);
mousemove(tx+st_poisk_X, ty+st_poisk_Y+1, w);sleep(p);
mousemove(tx+st_poisk_X, ty+st_poisk_Y-1, w);sleep(p);
mousemove(tx+st_poisk_X, ty+st_poisk_Y, w);sleep(p);


if(transparency (0, w)==1)//если окно прозрачное то выполнить
{
transparency (-1, w);
}

}
}

но не получается... как определить в каком состоянии сейчас окно?
хочу сделать
если окно скрыто -1 то что бы
выполнялось условие в {}
потом кусок кода
и после если окно было переведено в состояние прозначности 0
что бы оно вернулось опять в состояние скрытия -1
если у этой функции нет определения состояния то только флагами определять в каком состоянии окно?
(Добавление)
 AdryV пишет:
эх как я понял при transparency -1, движение мыши происходит, но не может определить курсор.
также с findimage не может найти изображение,
так как игра клиент думает что она свернута или в ожидании... запустил через програмку зерколо игры, в нем видно что курсор бегает по клиенту даже мобы подсвечиваются но над ними не появляется показатель жизни...
походу такоеже и с определением курсора...
даже если transparency = 0 прозрачное но окно перекрыто полностью то не работает

но если кибор не активен то все отлично определяется...... я запутался.....
10. AdryV - 06 Августа, 2016 - 07:03:54 - перейти к сообщению
в итоге после кучи тестов и кучи закометированного кода, выяснил что захват окна сбивается при не правильном переключении окон, и при sendkey
насчет переключения окон то если позади игры у меня находится браузер на весь экран и я кликаю именно в браузере ив этот момент окно просто перекрывается то захват окна отваливается....!!!
насчет sendkey еще не выяснил но без них и правильном переключении через win+tab отвала захвата не наблюдается... думаю что у меня в коде что-то сильно влияет на правильность работы...
(Добавление)
а может ли всплеск графики в игре влиять на отвал захвата....
в этом куске я нахожусь в бою цикл просто проверяет но в тотже момент активирет в таймере скилы, а у скилов анимация не отключается.... тоисть если активируется умение тоже происходит отвал, хотя умения переделал под sendmouse
CODE:
f (getcolor(tabX1, tabY1, w)==ataka)// ïðîâåðÿåì ñðàáîòàëà ëè àòàêà
{
//textout(1, 0, 80, "àòàêà àêòèâíà", 2);
//âêëþ÷àåì íàæàòèå ñêèëîâ
boi:;
if (f==0){for(n2=0; n2<8; n2++){t[n2]=gettime();}f=1;}
//sendkey("e", w);//íàæèìàåì Å ÷òî áû âî âðåìÿ äâèæåíèÿ ñîáèðàòü ëóò
sleep(20);
heal=1;//õèëèìñÿ âî âðåìÿ áîÿ
if (getcolor(tabX1, tabY1, w)==ataka) goto boi;//ïîêà àêòèâíà àòàêà çàöèêëåí êîä
f=0;//îòêëþ÷àåì íàæàòèå ñêèëîâ
l=0;//îáíóëåíèå êîëè÷åñòâà ñáîðà ëóòà
//ty: if (l<lyt){sendkey("e", w);sleep(300); l++; goto ty;}//Ñáîð ëóòà

(Добавление)
спустя столько мучений и тестов выяснил что в итоге было всего лишь залипание левой кнопки мыши....
Kibor , извиняюсь.... за мою невнимательность... в коде все правильно но паузы были сильно короткими что при отправке в окно через send не успевало отпустить кнопку...
а при активации окна они сбрасывались и поэтому работали.... это лишь мое предположение
так что в баге ничто не виновато а лишь залипание левой кнопки
сейчас в коде добавил простое нажатие без удержаний и все отлично работает когда не находит курсор или изображение
но вот этот баг пожалуй остался
 AdryV пишет:
насчет переключения окон то если позади игры у меня находится браузер на весь экран и я кликаю именно в браузере ив этот момент окно просто перекрывается то захват окна отваливается....!!!

до тех пор пока в окне не произойдет простой клик

Powered by ExBB FM 1.0 Final