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

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

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

> Без описания
konctantin777
Отправлено: 28 Октября, 2022 - 09:07:03
Post Id



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


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Здравствуйте.
Если сделать W_Kib=window ("Gems"); , то обновятся данные об окне, если setwindowparam(W_Kib); , то тоже обновятся. В чём тогда между ними разница, Почему всегда просто W_Kib=window ("Gems"); не писать ?

+ окно игры в шпионе показывает window ("Gems").
CODE:
запускаю:;
log("Запускаю");

if(start("C:\Program Files (x86)\Gems\Gems.exe")==1)
{pause(1000);goto жду_нач_окно;} // запускаю игру
if(start("D:\Gems\Gems.exe")==1)
{pause(1000);goto жду_нач_окно;} // запускаю игру

pause(1000);
goto запускаю;

жду_нач_окно:;
W_Kib=window ("Gems");
n1= formatwi(W_Kib);

if(n1==0)
{log("Жду начальное окно");pause(1000);goto жду_нач_окно;}

setwindowparam(W_Kib);

log("Жду_играть_(гл. окно)");

W_Kib=window ("Gems");
setwindowparam(W_Kib);
// если находится картинка- идёт дальше, если нет- на log("Жду_играть_(гл. окно)");

Кибор закрывает и открывает игру- не находит картинку и по кругу пишет "Жду_играть_(гл. окно)". Если игра уже запущена- картинка находится и код выполняется дальше. Как правильно сделать, чтобы игра находилась после запуска ?

(Отредактировано автором: 28 Октября, 2022 - 09:12:08)

 
 Top
Zireael
Отправлено: 28 Октября, 2022 - 11:55:49
Post Id



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


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




 Цитата:
Если сделать W_Kib=window ("Gems" ); , то обновятся данные об окне, если setwindowparam(W_Kib); , то тоже обновятся

При вызове window() будет новый поиск окна, setwindowparam() только зполнит структуру win.
 Цитата:
Как правильно сделать, чтобы игра находилась после запуска ?

CODE:
win W_Kib = window (-1, "Notepad", -1); // окно блокнота
while(W_Kib==0) // ждать когда окно появится
{
W_Kib = window (-1, "Notepad", -1);
textout(0, 0, 0, "Открыть блокнот для продолжения скрипта", 0);
sleep(300);
}
messagebox("Блокнот найден");
 
 Top
konctantin777
Отправлено: 28 Октября, 2022 - 15:05:22
Post Id



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


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




 Zireael пишет:
При вызове window() будет новый поиск окна, setwindowparam() только зполнит структуру win.

Т.е. если окно не исчезает, то без разницы, что писать- итог один ?

CODE:
win W_Kib = window (-1, "Notepad", -1); // окно блокнота

f:;
while(W_Kib==0) // ждать когда окно появится
{
W_Kib = window (-1, "Notepad", -1);
textout(0, 0, 0, "Открыть блокнот для продолжения скрипта", 0);
sleep(300);
}
messagebox("Блокнот найден");
goto f;


Если блокнот закрыть, то всё равно пишет, что найден. Не должен же ?
Игра при запуске открывает одно окно, потом закрывает и открывает другое и оба определяются как window ("Gems"). Может из- за этого ?
(Добавление)
CODE:
W_Kib=window("Gems"); // окно

while(W_Kib==0) // ждать когда окно появится
{
W_Kib =window("Gems");;
//textout(0, 0, 0, "Открыть блокнот для продолжения скрипта", 0);
sleep(300);
}
log("окно есть");
// тут ищет картинку и если находит идёт дальше
// если не находит идёт сюда и снова кртинку
log("Жду_играть_(гл. окно)");

W_Kib=window ("Gems");


Правильно ? Тоже не хочет. Пишет, что окно есть и потом по кругу "Жду_играть_(гл. окно)". А если запустить с запущенной игрой, то норм проходит...
(Добавление)
CODE:
win W_Kib = window (-1, "Notepad", -1); // окно блокнота

f:;
W_Kib = window ("fghfg");
while(W_Kib==0) // ждать когда окно появится
{
W_Kib = window (-1, "Notepad", -1);
textout(0, 0, 0, "Открыть блокнот для продолжения скрипта", 0);
sleep(300);
}
messagebox("Блокнот найден");
goto f;

А если сделать так, то корректно работает при закрытии блокнота. Получается, что в win нельзя записывать одинаковое значение ??
 
 Top
Zireael
Отправлено: 29 Октября, 2022 - 01:58:51
Post Id



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


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




CODE:
loop()
{
win W_Kib = window (-1, "Notepad", -1); // окно блокнота
while(W_Kib==0) // ждать когда окно появится
{
W_Kib = window (-1, "Notepad", -1);
textout(0, 0, 0, "Открыть блокнот для продолжения скрипта", 0);
sleep(300);
}
messagebox("Блокнот найден");
}

Если закрыть блокнот, то будет снова ожидать.
 
 Top
Martin
Отправлено: 29 Октября, 2022 - 15:35:02
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




 Zireael пишет:
Если закрыть блокнот, то будет снова ожидать.
а как сделать чтобы скрипт выполнился один раз при открытии блокнота и ушел в ожидание когда пока я не закрою и открою блокнот снова?
 
 Top
konctantin777
Отправлено: 29 Октября, 2022 - 15:44:06
Post Id



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


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Zireael , Ваш код да, но почему мой пример не работает ? Какая- то фича в киборе, что нельзя несколько раз заполнять переменную win одинаковыми данным ?
 konctantin777 пишет:
win W_Kib = window (-1, "Notepad", -1); // окно блокнота

f:;
W_Kib = window ("fghfg");
while(W_Kib==0) // ждать когда окно появится
{
W_Kib = window (-1, "Notepad", -1);
textout(0, 0, 0, "Открыть блокнот для продолжения скрипта", 0);
sleep(300);
}
messagebox("Блокнот найден");
goto f;

(Добавление)
 konctantin777 пишет:
 Zireael пишет:
При вызове window() будет новый поиск окна, setwindowparam() только зполнит структуру win.

Т.е. если окно не исчезает, то без разницы, что писать- итог один ?


Если окно постоянно есть, то есть ли какая разница, какой командой обновлять данные ?
(Добавление)
 Martin пишет:
Zireael пишет:
Если закрыть блокнот, то будет снова ожидать.
а как сделать чтобы скрипт выполнился один раз при открытии блокнота и ушел в ожидание когда пока я не закрою и открою блокнот снова?


while(W_Kib==1) // окно есть- делаем паузу на это время
или где то тут на форуме есть функция от Zireael, что определяет наличие открытого процесса
 
 Top
Zireael
Отправлено: 29 Октября, 2022 - 17:23:39
Post Id



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


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




 Цитата:
но почему мой пример не работает ?

Какой именно?
 Цитата:
Если окно постоянно есть, то есть ли какая разница, какой командой обновлять данные ?

Нет смысла каждый раз искать окно используя window(). Можно просто обновлять инфу через setwindowparam().
 Цитата:
а как сделать чтобы скрипт выполнился один раз при открытии блокнота и ушел в ожидание когда пока я не закрою и открою блокнот снова?

CODE:
#define SYNCHRONIZE 0x00100000
#define NULL 0
#define TRUE 1
#define WAIT_TIMEOUT 258
#define WAIT_FAILED -1
external(INT,"WaitForSingleObject", "WaitForSingleObject", "Kernel32.dll");
external(INT,"OpenProcess", "OpenProcess", "Kernel32.dll");
external(INT,"CloseHandle", "CloseHandle", "Kernel32.dll");

loop()
{
int PID = -1;
messagebox("Откройте блокнот");
while(PID==-1)
{
PID = findprocess("notepad.exe"); // ждать когда откроется процесс блокнота
sleep(300);
}
messagebox("Блокнот найден. Ждём когда он будет закрыт.");
// тут нужные действия

int hProcess = OpenProcess(SYNCHRONIZE, TRUE, PID);
if(hProcess == NULL)
{
messagebox("Процесс не открылся");
break;
}
int result = WaitForSingleObject(hProcess, 5000); // ожидать 5 секунд закрытия блокнота
if(result==WAIT_FAILED)
{
messagebox("WaitForSingleObject Error");
break;
}
if(result==WAIT_TIMEOUT) // блокнот не был закрыт в течении указанного времени
{
messagebox("Вышло время ожидания");
break;
}
CloseHandle(hProcess);
messagebox("Блокнот закрыт");
}
 
 Top
konctantin777
Отправлено: 29 Октября, 2022 - 18:18:32
Post Id



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


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




 Zireael пишет:
Какой именно?


CODE:
win W_Kib = window (-1, "Notepad", -1); // окно блокнота

f:;
W_Kib = window ("fghfg");
while(W_Kib==0) // ждать когда окно появится
{
W_Kib = window (-1, "Notepad", -1);
textout(0, 0, 0, "Открыть блокнот для продолжения скрипта", 0);
sleep(300);
}
messagebox("Блокнот найден");
goto f;
 
 Top
Zireael
Отправлено: 29 Октября, 2022 - 18:47:56
Post Id



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


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




Этот код работает.
 
 Top
konctantin777
Отправлено: 29 Октября, 2022 - 20:00:24
Post Id



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


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




 Zireael пишет:
Этот код работает.

Хмм... Час назад показывал,
 Zireael пишет:
Этот код работает.

Да, не тот вставил. Этот, с разными переменными работает, а почему не работает с одной ? (при закрытии блокнота, пишет что он есть ?)
CODE:
win W_Kib = window (-1, "Notepad", -1); // окно блокнота

f:;
while(W_Kib==0) // ждать когда окно появится
{
W_Kib = window (-1, "Notepad", -1);
textout(0, 0, 0, "Открыть блокнот для продолжения скрипта", 0);
sleep(300);
}
messagebox("Блокнот найден");
goto f;
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by