Логика разработки такая: некие данные отправляются в папку в виде файлов, а чтобы "положить" эти данные в программу и обработать - нужно нажать правой кнопкой мыши на папке и выбрать команду проводника.
[spoiler]
Вопрос: как эту команду добавить? Тут нам на помощь приходит аксиома "В Windows всё - реестр".
Команда добавления пункта в контекстное меню выглядит так:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTDirectoryshellOMS_Tool]
"Icon"=hex(2):25,53,79,73,74,65,6D,44,72,69,76,65,25,5C,50,72,6F,67,72,61,6D,20,46,69,6C,65,73,5C,4D,79,50,72,6F,67,72,61,6D,5C,6D,61,69,6E,2E,65,78,65
@="Загрузить в мою программу"
[HKEY_CLASSES_ROOTDirectoryshellOMS_Toolcommand]
@=hex(2):22,25,53,79,73,74,65,6D,44,72,69,76,65,25,5C,50,72,6F,67,72,61,6D,20,46,69,6C,65,73,5C,4D,79,50,72,6F,67,72,61,6D,5C,6D,61,69,6E,2E,65,78,65,22,20,22,25,31,22
HKEY_CLASSES_ROOT\Directory\shell\OMS_Tool\command - содержит команду, исполняемую для файла. В нашем примере это "%SystemDrive%\Program Files\MyProgram\main.exe" "%1"
Параметры закодированы в hex кодировке, преобразовать строку в hex можно в онлайн сервисе.
Если добавить эту информацию в реестр, то в контекстном меню проводника появится команда "Загрузить в мою программу", а в вашу программу будет передан путь к папке в качестве аргумента.
Далее его можно использовать по своему усмотрению.
Пример получения строки пути к папке на vb.net
Dim sCmdLine As String = Environment.CommandLine()
Dim iPos = sCmdLine.IndexOf("""", 2)
Dim sCmdLineArgs = sCmdLine.Substring(iPos + 1).Trim()
'после этих преобразований в переменной sCmdLineArgs окажется полный путь к папке, указанной в качестве аргумента при запуске программы.