Перетащите обработчик событий для консольных приложений - PullRequest
0 голосов
/ 30 ноября 2018

Этот вопрос не о том, как открыть консольное приложение путем перетаскивания файла на исполняемый файл и последующего доступа к пути к файлу в качестве аргумента.

Вместо этого это дляобработка перетаскивания файла в уже открытое консольное окно.Если вы когда-либо делали это, ожидая ввода на Console.ReadLine(), вы будете знать, что он введет путь перетаскиваемого файла в окно консоли, чтобы вы могли получить к нему доступ.Проблема заключается в том, что он хочет обернуть путь в двойные кавычки, что вызывает проблемы со многими методами в пространстве имен ввода-вывода.

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

1 Ответ

0 голосов
/ 02 декабря 2018

Нет поддержки перетаскивания в приложениях в режиме консоли.Это работает только потому, что его реализует conhost.exe, процесс, которому принадлежит окно консоли.Вы не можете возиться с тем, что он делает, другой процесс.Fwiw, также причина того, что conhost.exe нужно было добавить в Win7, было необходимо разрешить перетаскивать из Проводника в консольное приложение, которое работает с повышением прав UAC.Обычно не допускается.

Двойные кавычки добавляются, поскольку это должно было упростить использование командного процессора.Эти двойные кавычки нужны для правильной обработки путей со встроенными пробелами.Написание кода для их решения должно быть простым, String.Replace () выполняет свою работу.Двойные кавычки недопустимы в строке пути, поэтому вам даже не нужно проверять, появляются ли они в начале и в конце.

...