Алгоритм действий пользователя: - Заполняем столбец "РЕЖИМ ОЗУ", графы "ОБЪЁМ ОЗУ" и "АЛГОРИТМ СЖАТИЯ" - Складываем необходимые для теста утилиты и файлы в папку "(tools)" рядом с Brut-4.xlsm - Растягиваем таблицу "ПОДБОР" (при необходимости) - Жмём кнопку "СТАРТ", далее работает макрос
Алгоритм действий макроса: - Макрос группами (пулами) запускает алгоритмы, указанные в ячейке [M2] ч/з утилиту procprofile32.exe, группа 1: procprofile32 -r7b -b -u nz.exe a -cc -m8000m 8000.nz Test.srep >> 8000.txt procprofile32 -r7b -b -u nz.exe a -cc -m6500m 6500.nz Test.srep >> 6500.txt procprofile32 -r7b -b -u nz.exe a -cc -m500m 500.nz Test.srep >> 500.txt (в результате будут созданы файлы 8000.nz+6500.nz+500.nz, 8000.txt+6500.txt+500.txt). - Далее из txt-файлов макрос считывает значения ОЗУ+РАЗМЕР+ВРЕМЯ в Brut-4.xlsm и сохраняет Brut-4.xlsm - Затем макрос удаляем *.nz+*.txt и запускаем следующий пул (группу) тестов: procprofile32 -r7b -b -u nz.exe a -cc -m7900m 7900.nz Test.srep >> 7900.txt procprofile32 -r7b -b -u nz.exe a -cc -m6400m 6400.nz Test.srep >> 6400.txt procprofile32 -r7b -b -u nz.exe a -cc -m700m 700.nz Test.srep >> 700.txt и т.д.
Тестовые файлы, внутри Brut-4.xlsm есть Sub test() - моя заготовка и Sub bedvit() - заготовка bedvit.
Да можно хоть сколько процессов запустить Ваш же макрос не требует получения результата от запущенного процесса, — потому, запускайте из сколько угодно, они все параллельно будут выполняться Никаких усложнений кода (типа того, что по вашим ссылкам) не требуется
Игорь написал: Да можно хоть сколько процессов запустить
с одним крохотным дополнением, что сама утилита nz64.exe при многократном запусе запускается в новом процессе, а уж все остальное зависит от операционной системы. И тут подходим к названию темы котороре не соотвтевует вопросу.
Игорь написал: макрос не требует получения результата от запущенного процесса
Вроде как требует: нужно дождаться завершения первой группы процессов, и только потом запустить следующую. Сама ОС так сделать не может, а как сделать это на VBA я не представляю.
bedvit 1. Запустить последовательно - не проблема, надо группами (похоже, что это возможно). 2. Утилита nz64.exe - это архиватор, Test.srep - любой файл/архив с расширением srep.
Написать свою СОМ dll? Да это не проблема. поэтому я вас и спросил ваша ли это утилита, можно ее было бы легко поправить, не прибегая к помощи VBA. Вы должны понимать как идет выполнение кода, что бы решить свою задачу. Если dll свою вы не сможете написать, то что бы запустить пул процессов (последовательно) в VBA, потом по результатам работы этого пула запустить второй пул в VBA - нужно знать когда первый пул отработает (так как выполняется он не в трансляторе VBA), в этом вся соль. У вас есть такой флаг или понимание как его получить?
Да, можно написать код в VBA, который запустит пул процессов, далее будет в цикле (к примеру через DoEvents), а лучше через Application.OnTime (что бы не грузить систему), отслеживать когда этот пул выполнится (по наличию нужных файлов в папке) и дальше запустит второй пул и т.д.
Распаковываем архив в папку, запускаем макрос. Создаются 10 файлов по 5 в одном пуле (параллельно). еxe мой, без вирусов (гарантировано). Набросал по быстрому, думаю, методика понятна.
В #14 предложено решение к такому названию темы: "Последовательный запуск из VBA независимых (в т.ч. от VBA) процессов, с проверкой на завершение каждого" в описание темы "независимые процессы могут выполнятся параллельно"
Acid Burn, а что тут решать? Вы ждёте, когда всё сделают за вас (конкретных вопросов не задаете, пишете что-то типа задания, сами не пытаетесь написать код по советам форумчан) Может, с таким подходом, пора уже в раздел Работа?