Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2013, 19:06   #1
DarkPower
Пользователь
 
Регистрация: 12.09.2012
Сообщений: 15
Стрелка Не открывает exe файл через Process.Start

Есть папка "1", в этой папке тоже есть папка "2"

Запускаю "1.exe" с папки "1"... "1.exe" включает прогаму "2.exe" из папки "2"...
Код:
Process.Start(Application.StartupPath + "\\2\\2.exe");
"2.exe" включает "3.exe" в папке "2"(той же где и 2.exe) -
Код:
Process.Start("3.exe");
но файл 3.exe не находит... А он там есть!

Если сразу запустить файл 2.exe то - находит.

1) Почему так??? файл 2.exe и файл 3.exe находятся в одной и той же папке - папке 2...

2) если сразу сделать в 1.exe переход на 3.exe
Код:
Process.Start(Application.StartupPath + "\\2\\3.exe");
, то 1.exe даже не открывается!!!

Помогите!

3) Может быть из-за того, что 1.exe написан на c#, а 3.exe на c++?
DarkPower вне форума Ответить с цитированием
Старый 24.03.2013, 19:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А он там есть!
Крик души прям... Отладку делал?
Код:
            try {
                Process.Start(Application.StartupPath + "\\2\\3.exe");
            }
            catch (Exception e) { Console.WriteLine(e.Message); }
Какой текст ошибки выдаст сей пример?
I'm learning to live...

Последний раз редактировалось Stilet; 24.03.2013 в 19:35.
Stilet вне форума Ответить с цитированием
Старый 24.03.2013, 20:38   #3
DarkPower
Пользователь
 
Регистрация: 12.09.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Крик души прям... Отладку делал?
Код:
            try {
                Process.Start(Application.StartupPath + "\\2\\3.exe");
            }
            catch (Exception e) { Console.WriteLine(e.Message); }
Какой текст ошибки выдаст сей пример?

Дали уже ответ на другом форуме...:
Цитата:
Язык не имеет значения. Проблема в том, что 2.exe имеет ту же рабочую директорию, что и 1.exe, поскольку является дочерним и наследует Application.StartupPath от родительского процесса.
Одним из решений проблемы будет замена в 2.exe
Process.Start("3.exe");
на
Process.Start("2\\3.exe");

Второе же решение заключается в получении директории, в котором находится само приложение:
Process.Start(
Path.Combine(
Path.GetDirectoryName(Assembly.GetE xecutingAssembly().GetName().CodeBa se),
"3.exe"
)
);
// Assembly.GetExecutingAssembly() возвращает текущую сборку, функция которой сейчас исполняется. Если функция вызывается из 2.exe, то я получу Assembly этого экзешника.
// Если функция находится в классе из какой-то dll, то функция вернёт Assembly этой dll.
// Assembly.GetName() возвращает AssemblyName для сборки.
// AssemblyName.CodeBase возвращает путь к файлу сборки.
// Path.GetDirectoryName(string) возвращает нам только путь к директории указанного файла.
// Path.Combine(string, string) соединяет путь к директории и название файла.

Последний раз редактировалось Stilet; 24.03.2013 в 22:14.
DarkPower вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Process::Start("IExplorer.exe", "www.yandex.ru"); msemenikhin Visual C++ 0 02.02.2012 16:53
Ошибка Module Unload: ole32.dll. Process Project1.exe (6812) Lum Общие вопросы Delphi 4 05.09.2011 23:28
Комп не открывает файлы .exe Alinko-malinko Свободное общение 5 14.04.2011 21:42
Как запустить через Делфи *.exe файл Испанец91 Помощь студентам 2 20.02.2010 00:11
Не получается открыть .exe файл, через команду ShellExecute Norton Общие вопросы Delphi 5 05.05.2009 19:57