Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: меняется класс при каждом запуске
Greaty
Отправлено: 30 Апреля, 2020 - 10:33:24
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 25
Дата рег-ции: Янв. 2016  
Репутация: 0




подскажите как найти окно игры по классу, если класс меняется при каждом запуске игры
единственная закономерность заключается в первых шести символах класса
могут быть такие I?W?8? а могут быть такие ?I?W?8 - все остальные символы в имени класса - знаки вопроса "?"
после первых шести символов может быть от 1 до 25 знаков вопросов

вот примеры имен класса за 50 запусков игры
I?W?8??????????????????????????
I?W?8???????????????????????
I?W?8??????????????????
I?W?8?????????????
I?W?8???????????
I?W?8??

?I?W?8?????????????????????????
?I?W?8??????????????????????
?I?W?8??????????????????
?I?W?8????????????
?I?W?8??????????
?I?W?8??

Предполагаю, что все это можно сделать через регулярное выражение

win wind = window (-1, "регулярное выражение которое ищет от 7 до 31 символов в которых присутствуют IW8 а все остальные '?'", -1);

но не понимаю как его составить
 
 Top
Zireael
Отправлено: 30 Апреля, 2020 - 11:48:07
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017  
Репутация: 585




CODE:
external(INT, "FindWindowEx", "FindWindowExA", "User32.dll");
external(INT, "GetClassName", "GetClassNameA", "User32.dll");

string name = "IW8\?"; // из каких символов может быть класс окна
// спецсимволы должны быть экранированы, т. е. написаны через \ (например: \!\?)

win w = formatiw(find_window(name));
if(w)
{
setwindowparam(w);
messagebox(w.name+formatic(13)+formatic(10)+w.class);
}
else messagebox("Окно не найдено");




function find_window(string class_window)
{
char class[999];
string temp;
int handle=FindWindowEx(0, 0, 0, 0);
while(handle)
{
if(GetClassName(handle, address(#class[0]), sizearray(class)))
{
if(regexsearch(1, #temp, format(#class[0]), "^["+class_window+"]+$"))return handle;
}
handle=FindWindowEx(0, handle, 0, 0);
}
return 0;
}
 
 Top
Greaty
Отправлено: 30 Апреля, 2020 - 13:24:11
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 25
Дата рег-ции: Янв. 2016  
Репутация: 0




Спасибо !! то что надо, работает идеально!!!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by