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

> Вопрос по массивам и окнам
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Отправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
sutra
сообщение 28.2.2019, 1:55
Сообщение #2


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Возможно в этом проблема
Тоже хотел сказать про это, но и это не главное. Идёт нагромождение операторов, а логика решения задачи туманная. Всё в одну кучу свалено. Ну надо искать окна, так давайте их сначала найдём. Так и не понял где проблема. Вылетело окно, ну что мешает определить это?


Поиск окон (в моей практике) работает как часы, там нет никаких нюансов.

Есть массив запущенных окон. Нашли массив действующих. Что мешает сравнить? В чём проблема?

Сравнить старый и новый, возможно сформировать ещё один массив окон, определяющий которые окна вылетели и которые требуют повторной инициализации и дальше всё по плану.

Нормально использовать подпрограммы, только это не вызов подпрограммы - это всего лишь мысль, как это делать. Вот и вызывайте подпрограмму (по метке подпрограммы) и там анализируйте и обрабатывайте массив.

Цитата
Переход из циклов исправлялся когда-то
Не сталкивался с такими проблемами, из любого места подпрограммы отрабатывают без проблем. Десятки вызовов из разных ИФ-ов и разных циклов работают без проблем.


Я вроде даже где-то 100% рабочий пример давал с "Блокнотами". Что там не устраивало?? Что не работало? Что работало не так??
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sel
сообщение 28.2.2019, 2:58
Сообщение #3


**

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



Цитата(sutra @ 28.2.2019, 3:55) *

Я вроде даже где-то 100% рабочий пример давал с "Блокнотами". Что там не устраивало?? Что не работало? Что работало не так??


Давали, это видоизменённая версия, окна переименовываются по имени персонажа при заходе в игру, список имён описан в списке %list, как бы я не пробовал экспериментировать, после 8-10 часов работы скрипта, FindWindow не находит ни одного окна и начинает заводить все окна по новой в итоге я прихожу домой, и вижу 35-40 копий игры(комп может выдержать не более 20). Сравнение массивов хорошая штука, но произойдёт то же самое, был массив с 10 окнами, FindWindow не найдёт ни одного окна и скрипт решит что все окна закрылись(хоть это и не так) и в результате сравнения массивов скрипт начнёт заводить новые окна. У меня был вопрос, может есть предел буфера памяти пилота? и при его достижении он забывает всё что в него записывалось?
Пользователь в офлайне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
DarkMaster   Его выдает винда при создании окна и он никак не ...   13.11.2018, 20:17
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   Подпрограмма в Пилоте - это собственно 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:38
Designed by Nickostyle