Здравствуйте, гость ( Вход | Регистрация )

> Вопрос по массивам и окнам
sel
сообщение 13.11.2018, 15:08
Сообщение #1


**

Neophyte
Сообщений: 32
Регистрация: 4.7.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.986
Возраст: 27



Вопрос в следующем, мне необходимо отследить количество запущенных окон игры, скрипт у меня ходит между окнами и выполняет разные задачи, ходит в цикле for.

Выглядит примерно так:

set %handle FindWindow ("Игра")
set #f 1
while (#f = 1)
for #i 1 size(%handle)
...
скрипт
...
end_for
end_while

Иногда случается так, что окно с игрой крашится с ошибкой, и скрипт заводит обратно вылетевшее окно с новым хендлом, в этом основная загвоздка, если бы не это обстоятельство то я бы мог записывать в массив %handle [#i 3] допустим цифру 0 если окно вылетело и проводить в цикле ещё один цикл for который бы складывал значения в столбце %handle [#i 3] и если оно будет равняться 0 то скрипт начнёт заводить все окна, но из за краша окон добавляется новая строчка в массиве с новым хендлом.

Задача - определить, что вылетели все окна игры, есть идеи как это можно сделать?
Заранее спасибо за ответ.

p.s. определить какое окно вылетело с ошибкой трудно, может вылететь абсолютно любое, всё что есть это хендл окна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 13.11.2018, 20:17
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.742
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29657
Пользователь №: 11.279



Цитата

я могу задать окну игры хендл вручную?

Его выдает винда при создании окна и он никак не может быть задан. Это внутренний (винды) ид.

Вам правильно предложили периодически делать findwindow на появление различий в списке хендлов. Соответственно, если появились новые - добавлять, исчезли старые - удалять. Как именно "красиво подсунуть" новое окно в работающий скрипт сказать невозможно не понимая и не видя всего скрипта. Если это просто перебор всех окон с одинаковыми действиями для всех окон, то проблемы нет, если дейсвтия разные либо нужно отслеживать этап этих действий(стартовая позиция после перезапуска окна может отличатся от той, что ожидает скрипт, например, стартовые менюшки), то нужно продумывать логику.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
sel   Вопрос по массивам и окнам   13.11.2018, 15:08
sutra   Эту строку помести в while если тормозов не будет...   13.11.2018, 15:20
sutra   После анализа массива ненужный элемент можно удали...   13.11.2018, 17:46
sel   Есть где то примеры анализа массивов? Массив приме...   13.11.2018, 18:05
sutra   Я не совсем понял что именно надо. Смысл примерно ...   13.11.2018, 18:27
sutra   Можно отсортировать оба массива, тогда наверное ещ...   13.11.2018, 18:55
sel   Можно отсортировать оба массива, тогда наверное е...   13.11.2018, 19:39
sutra   Опиши подробнее. Скрипт заводит или игра сама соз...   13.11.2018, 23:00
sutra   Ты можешь присвоить окну свой порядковый номер se...   13.11.2018, 23:11
cirus   Скобки не нужны. Тоже самое: set %handleold %han...   14.11.2018, 2:23
sel   Придумал более интересный способ определения вылет...   15.12.2018, 1:34
cirus   Откуда это? Запустить любое количество окон, в и...   15.12.2018, 2:40
sutra   Видимо проблема определения вылетевших окон не реш...   15.12.2018, 4:26
sel   В общем написал преемлемый для меня вариант(есть с...   17.12.2018, 16:16
sutra   Количество окон игры должно быть постоянным? или м...   15.12.2018, 4:59
sutra   Про ошибку конкретного примера кода уже более опыт...   15.12.2018, 5:14
DarkMaster   раньше пилотовский синтаксис отказывался восприни...   15.12.2018, 5:47
sutra   Ну на 100% не вникал, но логика правильная, если в...   17.12.2018, 18:22
sel   Итак, у меня новый затуп, пытаюсь красиво сохранят...   23.12.2018, 4:28
DarkMaster   [code]local write, writeIndent, writers, refCount;...   23.12.2018, 5:36
cirus   Дописывать пробелы в конец строки, чтобы все были...   23.12.2018, 5:39
sutra   Я бы порекомендовал использовать табуляцию. Прост...   23.12.2018, 13:10
DarkMaster   Проблема в том, что текстовые редакторы табуляцию...   23.12.2018, 13:41
sutra   Да вариантов полно, табуляция - это просто выравни...   23.12.2018, 14:08
sutra   Если конечно установлен эксель. Выбираешь вкладку ...   23.12.2018, 14:33
sel   Ииии, мне снова нужна ваша помощь друзья:) Проблем...   29.12.2018, 0:48
cirus   В папке с пилотом Scripts\Backup. Ищите рабо...   29.12.2018, 1:22
sutra   Ну если быстро (чисто для Вашего случая) не вникая...   29.12.2018, 3:29
sel   По прежнему сталкиваюсь всё с той же проблемой, ес...   28.2.2019, 0:26
cirus   Возможно в этом проблема. Попробуйте не использов...   28.2.2019, 1:34
sutra   Тоже хотел сказать про это, но и это не главное. И...   28.2.2019, 1:55
sel   Я вроде даже где-то 100% рабочий пример давал с ...   28.2.2019, 2:58
sutra   Подпрограмма в Пилоте - это собственно goto на мет...   28.2.2019, 2:27
sutra   findwindow ищет окна в том порядке, в котором они ...   28.2.2019, 2:47
cirus   2гб и вылет.   28.2.2019, 3:04
sutra   Ну хоть что-то, я тоже думал на эту тему. Всё-таки...   28.2.2019, 3:32
sel   Ну хоть что-то, я тоже думал на эту тему. Всё-так...   5.3.2019, 10:10
sutra   Голову на отсечение конечно давать не буду. Но иск...   28.2.2019, 3:42
sutra   Вот без всякого хвастовства говорю (хотя гордость ...   28.2.2019, 3:55
DarkMaster   gosub работает полностью корректно с циклами при ...   28.2.2019, 14:00
sel   Возникло несколько вопросов: 1. Можно ли команду l...   4.5.2019, 13:45
cirus   Нет, только txt.   4.5.2019, 14:06


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 8.7.2025, 12:04
Designed by Nickostyle