Существует несколько ограничений на длину имен, переданных в ShellExecute
, но обычно они превышают 512 символов. Кажется, вам просто нужно динамически распределять имена, а не использовать статический массив символов.
Если вы хотите перейти к максимальной длине командной строки, вы можете использовать CreateProcess
, который имеет ограничение в 32 768 символов.
В качестве другого варианта вы можете записать список аргументов во временный файл. Затем вы измените внешнюю программу так, чтобы она могла передавать путь к этому файлу в качестве аргумента командной строки. Очевидно, что вам также необходимо изменить внешнюю программу, чтобы она могла читать файл и получать длинный список файлов из временного файла.