Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


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

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

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

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

FolderBrowserDialog

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

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

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

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

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

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

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

меню

Плюсы:

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

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

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

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

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

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

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

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

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


Codeby Security School от Сodeby

Мы запустили свою онлайн школу по информационной безопасности. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного в курсе Paranoid


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

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

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

774

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

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

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

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

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

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

либо

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

было

стало

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

Бонус

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

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

результат

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

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

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

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


Безопасная сделка с гарантом Сodeby

Гарант является доверенным посредником между Участниками при проведении сделки.​ Услуга сайта «Проведение сделок через Гаранта» предоставляется всем зарегистрированным пользователям codeby.net Подробнее ...


Похожие темы

Как изменить файл манифест Как изменить данные в файле манифест В этой заметке описано два простых способа, с помощью которых можно изменить данные в файле манифест. Файл ма...
У меня не открывается xml файл, что делать?... Что делать, если не удается открыть xml файл? В этой статье хотелось бы рассмотреть некоторые причины, из-за которых очень часто не удается открыть x...
c# Шпаргалка для работы с папками и подпапками... c# Шпаргалка для работы с папками и подпапками Перед началом работы подключите пространство имён System.IO Это можно выполнить как вручную, добави...
c# Как получить путь к папке Windows?... Как быстро получить путь к папке Windows? Из этой небольшой заметки вы узнаете, как получить путь к папке Windows в программе написанной на языке c# ...
Как изменить код программы без исходника... Как изменить код программы, если потерян исходник Бывают ситуации, когда под рукой нет исходника, а Вам срочно требуется внести изменения в коде, нап...