Как перетащить файл в консоль

289
12 января 2017, 03:20

Хочу сделать считывание модулей и.т.п из .exe - .dll файлов!

Подскажите как добиться эффекта Drag and Drop в консоль?

Хочу сделать так: если переместили не тот формат вывести ошибки что мол не тот формат) и продолжить работу.

Если же переместили нужный файл, работаем с ним...

Такой вариант не работает:

try
        {
            if (Path.GetExtension(args[0]) == ".exe" || Path.GetExtension(args[0]) == ".dll")
            {
               Console.WriteLine("Working.../");
            }
            else
                Console.WriteLine("Format is not correct");
        }
        catch { }
        Console.ReadKey();
Answer 1

Вы можете это сделать хуком окна консоли.

Для этого вам необходимо получить HWND окна консоли:

[DllImport("kernel32.dll")]
public static IntPtr GetConsoleWindow();
IntPtr cmdHandle = GetConsoleWindow();

Затем необходимо зарегистрировать Drag and Drop используя RegisterDragDrop

Больше информации о RegisterDragDrop:

https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms678405(v=vs.85).aspx

Answer 2

В свежих версиях windows перетаскивание файла в консоль вызывает набор в консоли полного пути к файлу. Считать его вы можете обычным Console.ReadLine(). Не забудьте убрать кавычки (например, методом .Trim('"')).

Или же вы можете принимать файл как параметр (тот самый args[0]). Но в таком случае пользователь будет должен перетащить файл не в консольное окно - а на вашу программу.

В последнем случае пользователь также сможет кликнуть на файл правой кнопкой, выбрать пункт "открыть с помощью" и там выбрать вашу программу. Скорее всего, это будет более простой способ чем Dran'n'Drop

READ ALSO
Разбиение файла на n частей java

Разбиение файла на n частей java

Требуется разбить файл (как правило архив) на определенное количество частейНашел готовый рабочий вариант на c#, но не смог его адаптировать...

1041
Использование фильтра в bindingsource при использовании entity framework

Использование фильтра в bindingsource при использовании entity framework

Здравствуйте, возникли проблемы при фильтрации в bindingSourceНасколько я понимаю, если использовать entity framework, то свойство SupportsFiltering bindingsource принимает...

397
Как грамотно убрать фокус с TextBox?

Как грамотно убрать фокус с TextBox?

Всем доброе утроКак грамотно убрать фокус с TextBox? Свойство Focused для данного контрола доступно только для чтения

909
Создать собственный вариант TileMode c# WPF

Создать собственный вариант TileMode c# WPF

Можно как-то создать собственный вариант ImageDrawingTileMode в c# wpf

292