konctantin777 |
Отправлено: 17 Июня, 2023 - 16:20:48
|
Эксперт
Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017
Откуда: Архангельск
Репутация: 6
|
Добрый день. Запутался немного...
CODE:win w=window (-1, -1, -1, -1, 1026, 735, -1);
if (w==0){messagebox ("Нет окна"); goto er;}
activate(w);
pause(1000);
Этот код у меня в начале скрипта. Если окно открыто, то норм. Если закрыто, то пишет, что "нет окна". Но если в середине скрипта закрыть окно и проверить
CODE:setwindowparam(w); pause(500);
if (w==0){messagebox ("Нет окна"); goto er;}
activate(w);
pause(1000);
то всегда эту проверку проходит, что окно открыто. Как правильно проверять в начале и в "середине" открыто ли окно игры ? |
|
|
konctantin777 |
Отправлено: 17 Июня, 2023 - 17:45:39
|
Эксперт
Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017
Откуда: Архангельск
Репутация: 6
|
Не получается. Всегда пишет, что окно есть.
CODE:win w=window ("Безымянный – Блокнот");
нач:;
setwindowparam(w); pause(500);
if (setwindowparam(w)==0)
{
textout(0, 100, 50, "НЕТ окна", 1); goto нач;
}
else
{
textout(0, 100, 50, "есть окно", 1); setwindowparam(w);
activate(w);
pause(1000); goto нач;
} |
|
|
Zireael |
Отправлено: 17 Июня, 2023 - 17:58:00
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:win w=window (-1, "Notepad", -1);
if(w)
{
loop()
{
int result = setwindowparam(w);
if (result==0)
{
textout(0, 100, 50, "НЕТ окна", 1);
pause(100);
}
else
{
textout(0, 100, 50, "есть окно", 1);
activate(w);
pause(1000);
}
}
}
else messagebox("Окно не найдено");
|
|
|
konctantin777 |
Отправлено: 17 Июня, 2023 - 18:13:49
|
Эксперт
Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017
Откуда: Архангельск
Репутация: 6
|
konctantin777 пишет: w=window (-1, "Notepad", -1); без этого, если несколько раз открыть, закрыть блокнот- скрипт перестаёт реагировать.
Вот так получается, что всегда реагирует на наличие окна. Правильно так определять наличие окна и обновлять его характеристики ?
CODE:win w=window (-1, "Notepad", -1);
int result = setwindowparam(w);
начало:;
w=window (-1, "Notepad", -1);
result = setwindowparam(w);
if (result==0)
{
textout(0, 100, 50, "НЕТ окна", 1);
pause(100);
}
else
{
textout(0, 100, 50, "есть окно", 1); setwindowparam(w);
activate(w);
pause(1000);
}
goto начало; (Отредактировано автором: 17 Июня, 2023 - 18:19:27) |
|
|
Zireael |
Отправлено: 17 Июня, 2023 - 18:25:22
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:win w = window (-1, "Notepad", -1);
if(w)
{
loop()
{
int result = setwindowparam(w);
if (result==0)
{
textout(0, 100, 50, "НЕТ окна, ждём когда появится", 1);
while(window (-1, "Notepad", -1)==0) pause(100); // ждать когда появится окно
w = window (-1, "Notepad", -1);
}
else
{
textout(0, 100, 50, "есть окно", 1);
activate(w);
pause(1000);
}
}
}
else messagebox("Окно не найдено"); |
|
|
Zireael |
Отправлено: 17 Июня, 2023 - 18:41:22
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Определение наличия окна если его закрыть
setwindowparam(w) возвращает 0 если окна нет. Это ответ на ваш вопрос.
Цитата: А while не совсем подходит т.к. надо проверить и что то делать дальше
Догадываться что вы хотите сделать никто не будет.
Цитата: Который я код выложил- так неправильно ?
Нет. |
|
|
|