Функция перетаскивания - это дополнение среды «Window Shell». Это не элемент, который обрабатывается стандартным образом и не может контролировать исходный код программы.
Менеджер окон определит, какая графическая программа получит событие перетаскивания. Затем эта программа решает что-то сделать.
В программе «CMD.EXE» на большинстве современных оконных компьютеров она обрабатывает это событие, просматривая объект прикрепленной файловой системы события, а затем извлекает абсолютную строку пути к этому файлу.
В программе «Windows Shell» он проверяет, может ли принимающий объект обрабатывать сброшенный объект, и если да, то он обычно передает путь отбрасываемого объекта к принимающему объекту в качестве параметра командной строки. Однако, большая часть этого делается по соглашению, вы, возможно, не получите возможность стилизовать это соглашение к вашим конкретным прихотям.
Ключевыми элементами, которые следует учитывать, является то, что в основном программы, которые должны выполнять работу, не связаны с программами, которые вы пишете. Если вы пишете CMD.EXE, вы можете изменить поведение по своему усмотрению. К сожалению, поскольку вы не пишете CMD.EXE, вы должны жить с поведением, которое кто-то еще предоставил.
Не знаю, я понимаю проблему. Как вы находитесь в «Консольном окне» и выполняете одновременно? – KeithSmith
Является ли этот вопрос об изменении 'argv' извне вашей программы во время выполнения? – Constantin
@KeithSmith Не командная строка. Это консольное приложение, составленное из GCC/mingw32 –