Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Переключение окон в однотипной игре.

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

1. jkdfjkldfslkjds - 30 Ноября, 2023 - 13:03:05 - перейти к сообщению
Здравствуйте.
Выполняю такой код:
<code>
win w[];
Find_Window(#w[0], "ElementClient Window"Подмигивание;

function Find_Window(win #w, string class)
{
external(INT, "FindWindow", "FindWindowExA", "user32.dll"Подмигивание;
int n=0, handle=FindWindow(0, 0, class, 0);;
while (handle!=0)
{
w[n]=formatiw(handle); n++;
handle=FindWindow(0, handle, class, 0);
}
return n;
}

activate(w[0]);
sleep(500);
activate(w[1]);
sleep(500);
activate(w[2]);
sleep(500);
activate(w[3]);
sleep(500);
activate(w[4]);
sleep(500);
activate(w[5]);
sleep(500);
activate(w[6]);
sleep(500);
activate(w[7]);
sleep(500);
activate(w[8]);
sleep(500);
</code>
То есть окна переключаются в разной последовательности, но. Массив всё время меняеется.То бишь в зависимости от последнего переключения.Допустим, если я протыкал вручную окна с 1 до 9, то они переключаются при запуске скрипта с 9 до 1. Как сделать, чтобы они работали независимо и чётко под своими номерами?
2. resident - 30 Ноября, 2023 - 16:56:33 - перейти к сообщению
Если платная версия, то запускать кибор с экрана содержащим id или ник, распознавать и сделать сопоставление ника и окна. Прописать массив с никами(id) и перебирать его.
3. Zireael - 30 Ноября, 2023 - 18:22:46 - перейти к сообщению
 Цитата:
<code>
</code>

Вместо угловых квадратные скобки должны быть.
 Цитата:
win w[];

Нужно указывать размер массива.
 Цитата:
win #w

Указатель на win нельзя передать.

Найти окна блокнота, активировать их в том порядке, в котором они расположены на панели задач:
CODE:
#define TH32CS_SNAPPROCESS 2
external(INT, "CreateToolhelp32Snapshot", "CreateToolhelp32Snapshot", "Kernel32.dll");
external(INT, "Process32First", "Process32First", "Kernel32.dll");
external(INT, "Process32Next", "Process32Next", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");


win tmp[100];
win w[10];

int k = FindWindow("notepad.exe"); // имя процесса
messagebox("Всего найдено окон: " +format(k));
for(int i=0; i<k; i++)
{
activate(w[i]);
sleep(500);
}


function FindWindow(string NameProcess)
{
int Count=0;
char PROCESSENTRY32[296];
int PID;
int hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot)
{
writeaddress(sizearray(PROCESSENTRY32), address(#PROCESSENTRY32[0]));
Process32First(hSnapshot, address(#PROCESSENTRY32[0]));

if(format(#PROCESSENTRY32[36]) == NameProcess)
{
PID = codhexi(#PROCESSENTRY32[8], 4);

if(listwinprocess(#tmp[0], PID) > 0)
{
w[Count] = tmp[0];
setwindowparam(w[Count]);
Count++;
}
}
while(Process32Next(hSnapshot, address(#PROCESSENTRY32[0])))
{
if(format(#PROCESSENTRY32[36])==NameProcess)
{
PID = codhexi(#PROCESSENTRY32[8], 4);
if(listwinprocess(#tmp[0], PID) > 0)
{
w[Count] = tmp[0];
setwindowparam(w[Count]);
Count++;
}
}
}
CloseHandle(hSnapshot);
}
return Count;
}
4. jkdfjkldfslkjds - 01 Декабря, 2023 - 02:08:00 - перейти к сообщению
Всё работает, всё отлично.Благодарю, очень выручили!А ещё такой вопрос интересный..может не уместный здесь, но всё же. С РФ можно щас полную версию купить или проблемно?
5. Zireael - 01 Декабря, 2023 - 02:22:30 - перейти к сообщению
 Цитата:
С РФ можно щас полную версию купить или проблемно?

https://myxa.cc/

Powered by ExBB FM 1.0 Final