2016-10-28 1 views
-1

У меня есть программа1 на моем рабочем столе. Программа 1 должна открыть Program2. У меня есть Program2 в папке \ Folder1 \ Folder2.Получение каталога программы при вызове из другого приложения

Так что все выглядит следующим образом:

Программа 1 = On Desktop

Программа 2 = \ Folder1 \ Folder2 \ Program2.exe

Я использую этот код в Program1 открыть Program2:

Process.Start("Z:\Folder1\Folder2\Program2.exe") 

Итак, когда Program2 открыта, это найти путь к файлу, который содержащемуся в Folder1, используя этот код:

Dim Path As String= System.IO.Directory.GetParent(Environment.CurrentDirectory).ToString() 

Итак, мы открываем Program1. Программа 1 открывает Program2. Программа2 открывает файл с одним каталогом вниз в папке 1.

Когда я запускаю Program2 напрямую, все работает. Однако, когда я запускаю Program1, он открывает Program2, который по какой-то причине считает, что каталог - это каталог Program1.

Любые идеи?

+0

Пожалуйста, покажите код, который открывается Program1 Program2 – Steve

+0

Отредактировано мое оригинальное сообщение! – lolikols

+0

Используйте класс ProcessStartInfo, чтобы передать более подробную информацию Process.Start. В частности, установка WorkDirectory – Steve

ответ

0

Простым термином, Environment.CurrentDirectory отражает каталог, в котором запущена целая цепочка процессов, в этом случае рабочий стол, когда запускается Program1. Когда program2 запускается независимо, он работает исправно, потому что именно там начался процесс.

Чтобы всегда получать каталог Program2, вы должны использовать Assembly.GetExecutingAssembly(). Место из кода в Program2.

+0

Спасибо! Так что я попытался это: Dim Path As String = System.IO.Path.GetDirectoryName (. System.Reflection.Assembly.GetExecutingAssembly() Место) Но это возвращает весь путь, и я не знаю, как для перемещения по одной папке вниз. Извините за плохое форматирование моего комментария. Я не знаю, как пропустить линию. – lolikols

+0

Вы должны просто добавить следующий уровень каталога в строку, которую вы возвращаете, а затем открыть файл с этого пути. – cdkMoose

Смежные вопросы