Как программно получить путь к папке

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

стандартный способ получить путь к папке

Очень часто бывает, что в своём приложении вы не можете заранее прописать точный путь к папке или директории, так как он может быть постоянно изменяемым, либо вообще не известен. Поэтому обычно в таких случаях в приложения добавляют control FolderBrowserDialog, благодаря которому пользователь сам указывает путь к папке или директории.

FolderBrowserDialog

Мы же в своём приложении можем получить выбранный пользователем путь, используя свойство SelectedPath.

Но использование данного элемента управления не всегда может быть уместным.

Например, у нас есть программа, которая выполняет сортировку файлов. После её запуска пользователь должен выполнить всего лишь одно действие выбрать с помощью диалогового окна папку, в которой нужно выполнить сортировку, ничего сложно, но есть одно но.

Как пользователь определяет, нужно выполнить сортировку или нет?

Сначала он открывает папку, оценивает количество файлов и какие то другие параметры, после чего принимает какое-то решение. Если, к примеру, решение положительное, то он запускает нашу программу, которая первое, что предлагает ему сделать, это выбрать папку, которая уже открыта (выбрана), что выглядит не совсем логично. При этом пользователь, каждый раз тратит своё время и если будет программа, которая будет, выполнять это же действие быстрее он отдаст предпочтение ей. Поэтому в данном примере, нужно изменить интерфейс программы, чтобы избавить пользователя от повторной работы.

новый способ получить путь к папке

И так для начала сделаем запуск программы быстрым и удобным. Для этого добавим возможность вызова нашего приложения из контекстного меню, которое возникает при нажатии правой кнопки мыши.

меню

Плюсы:

1. Меню можно вызывать в любом месте.

2. Из него можно запустить любую программу.

3. Затраты по времени, которые мы тратим на вызов программы минимальны.

Добавление нового пункта меню

И так для начала добавим в меню новый пункт, при нажатии на который будет запускаться наша программа.

Открываем редактор реестра regedit.

1. Переходим по указанному пути

2. Создаем новый раздел с любым именем, например cleaning. Это название будет отображаться в контекстном меню по умолчанию.

3. В созданном разделе создадим подраздел по имени command.


Наш канал в telegram канал codeby

Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде !  Подробнее ...

корневые ключи

добавленные разделы

При создании нового ключа автоматически создается так называемый параметр по умолчанию, так же он может иметь имя Default, если у вас английская версия Windows. В качестве значения для данного параметра указываем полный путь к файлу запуска нашей программы.

774

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

Теперь для проверки можно нажать в любом месте правую кнопку мыши и в меню должен появиться новый пункт cleaning.

новый пункт меню

Исходный код, который проделает всё выше описанное.

Получение пути

Теперь нужно получить полный путь к открытой в данный момент папке. Для этого сначала удалим из нашей программы FolderBrowserDialog, а затем в событие Form_Load поместим следующий код

либо

Оба делают одно и тоже.

было

стало

Осталось поместить файл сборку нашего приложения в выше указанную папку C:\MyProg, вообще можно поместить файл куда угодно главное не забыть, потом изменить путь в реестре. Всё.

Бонус

Если Вы хотите, чтобы пункт меню был на русском языке, то добавьте параметр типа: REG_SZ (строковый параметр) с именем MUIVerb и укажите для него любое значение.

русификация пункта меню

результат

пункт меню на русском языке

Чтобы пользователь случайно не выполнил запуск программы не в той папке, можно сделать пункт меню скрытым. Для этого нужно добавить строковый параметр Extended значение для него указывать не нужно. Чтобы увидеть скрытый пункт меню нужно зажать клавишу Shift и нажать правую кнопку мыши.

скрытый пункт меню

Читайте также:


Наш канал в telegram канал codeby

Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде !  Подробнее ...

Похожие темы

Почему возникает исключение: Index was out of rang... Исключение: Index was out of range Очень часто при работе с массивами или коллекциями можно столкнуться с исключением: Index was out of range. В чём ...
Как изменить код программы без исходника... Как изменить код программы, если потерян исходник Бывают ситуации, когда под рукой нет исходника, а Вам срочно требуется внести изменения в коде, нап...
Как создать закладку с кодом в программе Visual St... Создаём закладки с кодом в программе Visual Studio Очень часто при создании программ бывает такой момент, когда ты понимаешь, что нужно вновь воспольз...
Как изменить файл манифест Как изменить данные в файле манифест В этой заметке описано два простых способа, с помощью которых можно изменить данные в файле манифест. Файл ма...
c# Как получить путь к папке Windows?... Как быстро получить путь к папке Windows? Из этой небольшой заметки вы узнаете, как получить путь к папке Windows в программе написанной на языке c# ...