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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2011, 21:10   #1
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию Запуск внешней программы

Наткнулся на такую проблему: использую вот такой код для запуска и ожидания программы:

Код:
                // включение внешней программы!
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo.FileName = path + "\\MA7\\MA7.exe";
                proc.Start();
                proc.WaitForExit();
Программа которую запускаю консольная, написана на фортране, не мною.
А проблема вот в чем: если кликнуть непосредственно на MA7.exe через проводник, она работает корректно (в итоге она должна выдать файл), но если эту программу запустить через cmd или программно, как мне нужно, она работает не корректно, и естественно, нужный мне файл на выходе не создает.

В чем может быть проблема?

Последний раз редактировалось Stilet; 21.05.2011 в 21:39.
Ciberal вне форума Ответить с цитированием
Старый 21.05.2011, 23:37   #2
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

Например, в Environment.CurrentDirectory, которая для программы, возможно, должна быть равна её рабочей директории.
Spawn™Production® вне форума Ответить с цитированием
Старый 21.05.2011, 23:44   #3
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 534
По умолчанию

недавно тоже с этим столкнулся(у меня запуск из реестра был), решилось с помощью
Код:
AppDomain.CurrentDomain.BaseDirectory
оно всегда содержит именно настоящее расположение экзешника независимо от способа запуска
а вот все это
Код:
		    Application.ExecutablePath
		    Environment.CurrentDirectory
		    Directory.GetCurrentDirectory()
выдавало неверные пути

Последний раз редактировалось m0nax; 21.05.2011 в 23:46. Причина: так надо
m0nax вне форума Ответить с цитированием
Старый 22.05.2011, 00:19   #4
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию

Дело в том, что программа MA7.exe запускается, но работает не так как надо.
Как повлияет на МА7.ехе AppDomain.CurrentDomain.BaseDirecto ry ?
Ciberal вне форума Ответить с цитированием
Старый 22.05.2011, 08:42   #5
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Оооо.. знакомая проблема,кстати,тоже фортрановское приложение запускал. Для процесса, который ты запускаешь можно задать рабочую папку.
Код:
proc.StartInfo.WorkingDirectory="здесь путь  до рабочей папки";
Не давай организму поблажки, каждый день тренируй его в шашки..

Последний раз редактировалось Скарам; 22.05.2011 в 09:37.
Скарам вне форума Ответить с цитированием
Старый 22.05.2011, 09:26   #6
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию

Попробовал предложенным способом. Не помогло, к сожалению.
Ciberal вне форума Ответить с цитированием
Старый 22.05.2011, 09:33   #7
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Странно. MA7.exe берет какие-то файлы из папки в которой находиться? Если да, то рабочей директорией должна быть папка с этими файлами. Если нет,(это, правда редко бывает), то не должно быть вообще никаких проблем.
Ты так написал?
Код:
// включение внешней программы!
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo.FileName = path + "\\MA7\\MA7.exe";
                proc.StartInfo.WorkingDirectory=path + "\\MA7\\";
                proc.Start();
                proc.WaitForExit();
Да, и проверь в отладчике путь path,если пользуешься openDialog, то CurrentDirectory меняется, папку запуска из которой запускалась программа можно достать через System.Windows.Forms.Application.St artupPath.
Не давай организму поблажки, каждый день тренируй его в шашки..

Последний раз редактировалось Скарам; 22.05.2011 в 09:39.
Скарам вне форума Ответить с цитированием
Старый 22.05.2011, 10:01   #8
Ciberal
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 33
По умолчанию

Хо-хо, заработало! Помогло то что вы посоветовали. У меня сходу не заработало из-за опечатки, бывает и так Спасибо!
Ciberal вне форума Ответить с цитированием
Старый 22.05.2011, 10:04   #9
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов внешней программы Macmeprag C# (си шарп) 1 14.05.2011 16:19
Работа программы во внешней среде sergh Паскаль, Turbo Pascal, PascalABC.NET 0 05.02.2011 14:49
Запуск внешней программы с параметрами Crystallon Общие вопросы Delphi 1 02.11.2010 23:05
Запуск программы на выполнение из другой программы. ViNcHeStEr Паскаль, Turbo Pascal, PascalABC.NET 6 18.06.2008 14:33
Приостановка цикла для выполнения внешней программы Uomo Общие вопросы Delphi 3 04.04.2008 11:48