Позволяет делать некоторые манипуляции с окном игры..
Видео работы публичного антиантикликера под Frost в скрытом окне игры
Если определяет не верно - перегрузить игру или компьютер
Видео работы Кибор http://youtu.be/ykWn9rrEkS8
CODE:
win w=selectwindow ("Имя Окна");
Принимает один параметр - имя окна.
При получение указателя становится доступна структура
Цитата:
win wind=selectwindow ("Имя Окна");
wind.width = ширина окна
wind.height = высота окна
wind.left = позиция по x относительно левого края экрана
wind.top = позиция по y относительно левого края экрана
wind.widthclient = ширина клиетской части окна (без системного меню и рамки)
wind.heightclient = высота клиетской части окна (без системного меню и рамки)
wind.leftclient = позиция клиетской части по x относительно левого края экрана
wind.topclient = позиция клиетской части по y относительно левого края экрана
wind.name = название окна
wind.class = название класса
Полученный указатель (HWND) для игры под защитой FROST можно использовать для всех функций Кибор (поиск изображений в фоне, определения курсора в игре, прозрачность игры, смена позиции и размера окна и т.д.) кроме:
Работа с памятью процесса.
Отправка нажатий в не активное окно.
Принудительная деактивация.
===================================
Так же возможно получение параметров в шпионе и графическом редакторе Кибор для игр под фростом. Если штатными средствами Кибор не сможет вывести параметры или отобразить графику при нажатие контр шифт S, выйдет соответствующее окно с предложением ввести название окна и Кибор определит защищенный указатель (HWND).
=======================================
Добавлены функции конвертации значения указателя win в int и наоборот. Это позволяет производить с указателями любые математические операции, сравнение указателей и вывод их в виде числа на экран.
formatwi - преобразует указатель win к int
CODE:
win wind=selectwindow ("Имя Окна");
int a=formatwi(wind);
int a=formatwi(wind);
formatiw - преобразует int к win
CODE:
int a=344535;
win wind=formatiw(a);
int a=344535;
win wind=formatiw(a);
Пример как использовать сравнение win через приведение к int для определения конкретного активного окна
CODE:
win w=window ("Безымянный — Блокнот", "Notepad", -1), w1;
s: w1=getwindow();
if (formatwi(w)==formatwi (w1))//Тут делать что то если блокнот окно активно..
{
w.leftclient=w.leftclient+20;
moveclient(w);
sleep(10);
w.topclient=w.topclient+20;
moveclient(w);
sleep(10);
w.leftclient=w.leftclient-20;
moveclient(w);
sleep(10);
w.topclient=w.topclient-20;
moveclient(w);
}
sleep(10);
goto s;
s: w1=getwindow();
if (formatwi(w)==formatwi (w1))//Тут делать что то если блокнот окно активно..
{
w.leftclient=w.leftclient+20;
moveclient(w);
sleep(10);
w.topclient=w.topclient+20;
moveclient(w);
sleep(10);
w.leftclient=w.leftclient-20;
moveclient(w);
sleep(10);
w.topclient=w.topclient-20;
moveclient(w);
}
sleep(10);
goto s;
Пример программы которая может управлять окном игры под Фростом (смена позиции - размера и прозрачности). Скачать получение HWND под Frost http://kibor-bot.com/files/hwnd.rar
если в прозрачности указать -1 окно скроется вообще и не будет реагировать на мышь. Но в нем можно искать в фоне изображения и вывести его ( или часть его, можно в уменьшенном размере) на экран с помощью visualwindow
Сам скрипт......
CODE:
win w;
int pos_size_button0[3][4];
string text_button0[3];
int flag_button0[3];
int pos_size_edit0[9][4];
string text_edit0[9];
int pos_size_static0[8][4];
string text_static0[8];
int col, x, y;
dialog();
//////////
enabletimer(0);
loop: sleep(100); goto loop;//Убрать после теста
function hwnd()
{
flag_button0[1]=0;
if (text_edit0[0]==""){hidedialog(0);messagebox ("Ввести имя"); showdialog(0, "HWND Frost", x-125, y-170, 250, 340, 1, 1); return;}
string temp=text_edit0[0];
text_edit0[0]="";
sleep(1000);
w=selectwindow (temp);
text_edit0[0]=temp;
if (w==0){hidedialog(0);messagebox ("Не найдено.."); showdialog(0, "HWND Frost", x-125, y-170, 250, 340, 1, 1); return;}
text_edit0[1]= format(formatwi(w));
text_edit0[2]=w.name;
text_edit0[3]=w.class;
text_edit0[4]=format(w.widthclient);
text_edit0[5]=format(w.heightclient);
text_edit0[6]=format(w.leftclient);
text_edit0[7]=format(w.topclient);
}
function proz()
{
flag_button0[0]=0;
if (text_edit0[1]==""){hidedialog(0);messagebox ("Получить HWND"); showdialog(0, "HWND Frost", x-125, y-170, 250, 340, 1, 1); return;}
transparency (formatsn(text_edit0[8]), w);
}
function pos_size()
{
flag_button0[2]=0;
if (text_edit0[1]==""){hidedialog(0);messagebox ("Получить HWND"); showdialog(0, "HWND Frost", x-125, y-170, 250, 340, 1, 1); return;}
w.widthclient=formatsn(text_edit0[4]);
w.heightclient=formatsn(text_edit0[5]);
w.leftclient=formatsn(text_edit0[6]);
w.topclient=formatsn(text_edit0[7]);
moveclient(w);
}
function dialog()
{
getdisplay(col, x, y);
x=x/2; y=y/2;
pos_size_button0[0][0]=12; pos_size_button0[0][1]=282; pos_size_button0[0][2]=147; pos_size_button0[0][3]=20;
pos_size_button0[1][0]=10; pos_size_button0[1][1]=33; pos_size_button0[1][2]=226; pos_size_button0[1][3]=20;
pos_size_button0[2][0]=12; pos_size_button0[2][1]=251; pos_size_button0[2][2]=227; pos_size_button0[2][3]=20;
text_button0[0]="Установить прозрачность"; text_button0[1]="Получить параметры"; text_button0[2]="Обновить позицию / размер";
//////////
pos_size_edit0[0][0]=135; pos_size_edit0[0][1]=8; pos_size_edit0[0][2]=101; pos_size_edit0[0][3]=20;
pos_size_edit0[1][0]=78; pos_size_edit0[1][1]=61; pos_size_edit0[1][2]=160; pos_size_edit0[1][3]=20;
pos_size_edit0[2][0]=78; pos_size_edit0[2][1]=86; pos_size_edit0[2][2]=160; pos_size_edit0[2][3]=20;
pos_size_edit0[3][0]=78; pos_size_edit0[3][1]=111; pos_size_edit0[3][2]=160; pos_size_edit0[3][3]=20;
pos_size_edit0[4][0]=78; pos_size_edit0[4][1]=137; pos_size_edit0[4][2]=160; pos_size_edit0[4][3]=20;
pos_size_edit0[5][0]=78; pos_size_edit0[5][1]=163; pos_size_edit0[5][2]=160; pos_size_edit0[5][3]=20;
pos_size_edit0[6][0]=78; pos_size_edit0[6][1]=190; pos_size_edit0[6][2]=160; pos_size_edit0[6][3]=20;
pos_size_edit0[7][0]=79; pos_size_edit0[7][1]=218; pos_size_edit0[7][2]=159; pos_size_edit0[7][3]=20;
pos_size_edit0[8][0]=173; pos_size_edit0[8][1]=281; pos_size_edit0[8][2]=65; pos_size_edit0[8][3]=20;
text_edit0[0]=""; text_edit0[1]=""; text_edit0[2]=""; text_edit0[3]=""; text_edit0[4]=""; text_edit0[5]=""; text_edit0[6]="";
text_edit0[7]=""; text_edit0[8]="20";
//////////
pos_size_static0[0][0]=10; pos_size_static0[0][1]=10; pos_size_static0[0][2]=118; pos_size_static0[0][3]=20;
pos_size_static0[1][0]=10; pos_size_static0[1][1]=65; pos_size_static0[1][2]=37; pos_size_static0[1][3]=20;
pos_size_static0[2][0]=10; pos_size_static0[2][1]=89; pos_size_static0[2][2]=52; pos_size_static0[2][3]=20;
pos_size_static0[3][0]=10; pos_size_static0[3][1]=115; pos_size_static0[3][2]=57; pos_size_static0[3][3]=20;
pos_size_static0[4][0]=11; pos_size_static0[4][1]=142; pos_size_static0[4][2]=65; pos_size_static0[4][3]=20;
pos_size_static0[5][0]=12; pos_size_static0[5][1]=170; pos_size_static0[5][2]=54; pos_size_static0[5][3]=20;
pos_size_static0[6][0]=13; pos_size_static0[6][1]=197; pos_size_static0[6][2]=60; pos_size_static0[6][3]=20;
pos_size_static0[7][0]=14; pos_size_static0[7][1]=224; pos_size_static0[7][2]=60; pos_size_static0[7][3]=20;
text_static0[0]="Ввести Название окна"; text_static0[1]="HWND"; text_static0[2]="Имя окна"; text_static0[3]="Класс окна";
text_static0[4]="Размер X"; text_static0[5]="Размер Y"; text_static0[6]="Позиция X"; text_static0[7]="Позиция Y";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "HWND Frost", x-125, y-170, 250, 340, 1, 1);
}
CREATE_TIMER(0, 100)
{
if (flag_button0[1]==1)hwnd();
if (flag_button0[0]==1)proz();
if (flag_button0[2]==1)pos_size();
}
int pos_size_button0[3][4];
string text_button0[3];
int flag_button0[3];
int pos_size_edit0[9][4];
string text_edit0[9];
int pos_size_static0[8][4];
string text_static0[8];
int col, x, y;
dialog();
//////////
enabletimer(0);
loop: sleep(100); goto loop;//Убрать после теста
function hwnd()
{
flag_button0[1]=0;
if (text_edit0[0]==""){hidedialog(0);messagebox ("Ввести имя"); showdialog(0, "HWND Frost", x-125, y-170, 250, 340, 1, 1); return;}
string temp=text_edit0[0];
text_edit0[0]="";
sleep(1000);
w=selectwindow (temp);
text_edit0[0]=temp;
if (w==0){hidedialog(0);messagebox ("Не найдено.."); showdialog(0, "HWND Frost", x-125, y-170, 250, 340, 1, 1); return;}
text_edit0[1]= format(formatwi(w));
text_edit0[2]=w.name;
text_edit0[3]=w.class;
text_edit0[4]=format(w.widthclient);
text_edit0[5]=format(w.heightclient);
text_edit0[6]=format(w.leftclient);
text_edit0[7]=format(w.topclient);
}
function proz()
{
flag_button0[0]=0;
if (text_edit0[1]==""){hidedialog(0);messagebox ("Получить HWND"); showdialog(0, "HWND Frost", x-125, y-170, 250, 340, 1, 1); return;}
transparency (formatsn(text_edit0[8]), w);
}
function pos_size()
{
flag_button0[2]=0;
if (text_edit0[1]==""){hidedialog(0);messagebox ("Получить HWND"); showdialog(0, "HWND Frost", x-125, y-170, 250, 340, 1, 1); return;}
w.widthclient=formatsn(text_edit0[4]);
w.heightclient=formatsn(text_edit0[5]);
w.leftclient=formatsn(text_edit0[6]);
w.topclient=formatsn(text_edit0[7]);
moveclient(w);
}
function dialog()
{
getdisplay(col, x, y);
x=x/2; y=y/2;
pos_size_button0[0][0]=12; pos_size_button0[0][1]=282; pos_size_button0[0][2]=147; pos_size_button0[0][3]=20;
pos_size_button0[1][0]=10; pos_size_button0[1][1]=33; pos_size_button0[1][2]=226; pos_size_button0[1][3]=20;
pos_size_button0[2][0]=12; pos_size_button0[2][1]=251; pos_size_button0[2][2]=227; pos_size_button0[2][3]=20;
text_button0[0]="Установить прозрачность"; text_button0[1]="Получить параметры"; text_button0[2]="Обновить позицию / размер";
//////////
pos_size_edit0[0][0]=135; pos_size_edit0[0][1]=8; pos_size_edit0[0][2]=101; pos_size_edit0[0][3]=20;
pos_size_edit0[1][0]=78; pos_size_edit0[1][1]=61; pos_size_edit0[1][2]=160; pos_size_edit0[1][3]=20;
pos_size_edit0[2][0]=78; pos_size_edit0[2][1]=86; pos_size_edit0[2][2]=160; pos_size_edit0[2][3]=20;
pos_size_edit0[3][0]=78; pos_size_edit0[3][1]=111; pos_size_edit0[3][2]=160; pos_size_edit0[3][3]=20;
pos_size_edit0[4][0]=78; pos_size_edit0[4][1]=137; pos_size_edit0[4][2]=160; pos_size_edit0[4][3]=20;
pos_size_edit0[5][0]=78; pos_size_edit0[5][1]=163; pos_size_edit0[5][2]=160; pos_size_edit0[5][3]=20;
pos_size_edit0[6][0]=78; pos_size_edit0[6][1]=190; pos_size_edit0[6][2]=160; pos_size_edit0[6][3]=20;
pos_size_edit0[7][0]=79; pos_size_edit0[7][1]=218; pos_size_edit0[7][2]=159; pos_size_edit0[7][3]=20;
pos_size_edit0[8][0]=173; pos_size_edit0[8][1]=281; pos_size_edit0[8][2]=65; pos_size_edit0[8][3]=20;
text_edit0[0]=""; text_edit0[1]=""; text_edit0[2]=""; text_edit0[3]=""; text_edit0[4]=""; text_edit0[5]=""; text_edit0[6]="";
text_edit0[7]=""; text_edit0[8]="20";
//////////
pos_size_static0[0][0]=10; pos_size_static0[0][1]=10; pos_size_static0[0][2]=118; pos_size_static0[0][3]=20;
pos_size_static0[1][0]=10; pos_size_static0[1][1]=65; pos_size_static0[1][2]=37; pos_size_static0[1][3]=20;
pos_size_static0[2][0]=10; pos_size_static0[2][1]=89; pos_size_static0[2][2]=52; pos_size_static0[2][3]=20;
pos_size_static0[3][0]=10; pos_size_static0[3][1]=115; pos_size_static0[3][2]=57; pos_size_static0[3][3]=20;
pos_size_static0[4][0]=11; pos_size_static0[4][1]=142; pos_size_static0[4][2]=65; pos_size_static0[4][3]=20;
pos_size_static0[5][0]=12; pos_size_static0[5][1]=170; pos_size_static0[5][2]=54; pos_size_static0[5][3]=20;
pos_size_static0[6][0]=13; pos_size_static0[6][1]=197; pos_size_static0[6][2]=60; pos_size_static0[6][3]=20;
pos_size_static0[7][0]=14; pos_size_static0[7][1]=224; pos_size_static0[7][2]=60; pos_size_static0[7][3]=20;
text_static0[0]="Ввести Название окна"; text_static0[1]="HWND"; text_static0[2]="Имя окна"; text_static0[3]="Класс окна";
text_static0[4]="Размер X"; text_static0[5]="Размер Y"; text_static0[6]="Позиция X"; text_static0[7]="Позиция Y";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "HWND Frost", x-125, y-170, 250, 340, 1, 1);
}
CREATE_TIMER(0, 100)
{
if (flag_button0[1]==1)hwnd();
if (flag_button0[0]==1)proz();
if (flag_button0[2]==1)pos_size();
}
Скрипт что работал на видео вверху с антиантикликером под защитой Frost
CODE:
win w=selectwindow ("RF Online");
int x1, y1;
activate(w);
transparency(0, w);
visualwindow(0, 0, 0, w.widthclient, w.heightclient, 1095, 565, 25, w);
a:;
key_click('g');
sleep(500);
mouse_click(223, 268);
sleep(500);
mouse_click(754, 181);
sleep(500);
mouse_click(785, 560);
sleep(500);
mouse_click(238, 586);
sleep(500);
goto a;
function key_click(char c)
{
key(c);
sleep(200);
key(c);
}
function mouse_click(int x, int y)
{
getmouse(x1, y1);
mouse(LEFT, x, y);
mousemove(x1, y1);
}
int x1, y1;
activate(w);
transparency(0, w);
visualwindow(0, 0, 0, w.widthclient, w.heightclient, 1095, 565, 25, w);
a:;
key_click('g');
sleep(500);
mouse_click(223, 268);
sleep(500);
mouse_click(754, 181);
sleep(500);
mouse_click(785, 560);
sleep(500);
mouse_click(238, 586);
sleep(500);
goto a;
function key_click(char c)
{
key(c);
sleep(200);
key(c);
}
function mouse_click(int x, int y)
{
getmouse(x1, y1);
mouse(LEFT, x, y);
mousemove(x1, y1);
}