Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / запуск консольного приложения из WinForms / 9 сообщений из 9, страница 1 из 1
03.03.2011, 12:33
    #37146348
sedan13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск консольного приложения из WinForms
Ситуация такая: в приложении WinForm запускаю консольное приложение, которое лежит в локальной сети, следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
                Process MyProcess = null;
                try
                {
                    MyProcess = Process.Start(MyProgramFolder.FullName + "my_program.exe");
                    //ждём когда процесс выполнения консольного приложения завершится
                    MyProcess.WaitForExit();
                }
Запускаемое консольное приложение должно производить работу со своим каталогом (Directory.GetCurrentDirectory()) из которого оно запускается (считывание из INI файла настроек и запись лога выполнения программы в текстовый файл LOG.TXT, например). Если запускать консольное приложение отдельно (не через вызов его в WinForm приложении), то всё отрабатывает на УРА. Но вот из под WinForm приложения консольное приложение "забывает" про свой каталог где оно находится и ищет свои файлы в каталоге WinForm приложения.

Вопрос: в чём причина такого поведения и как это можно исправить?
...
Рейтинг: 0 / 0
03.03.2011, 14:07
    #37146720
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск консольного приложения из WinForms
sedan13,

Очевидно "текущий каталог" имеет разное значение в этих случаях. Попробуй запускать программу через Process.Start принимающий ProcessStartInfo, в котором свойство WorkingDirectory = MyProgramFolder.FullName.
...
Рейтинг: 0 / 0
03.03.2011, 15:36
    #37147047
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск консольного приложения из WinForms
Это всё нюансы отработки Directory.GetCurrentDirectory(). Если вы не манипулируете на рантайме с доменами приложения - попробуйте вместо Directory.GetCurrentDirectory() использовать AppDomain.CurrentDomain .BaseDirectory.
...
Рейтинг: 0 / 0
15.03.2011, 10:19
    #37165054
sedan13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск консольного приложения из WinForms
проблема решена через ~15 мин после опубликования поста. спасибо ответившим. в общем надо задавать свойство Process.StartInfo.WorkingDirectory:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
                Process myProcess = new Process();
                try
                {
                    myProcess.StartInfo.WorkingDirectory = MyFolder.FullName;
                    myProcess.StartInfo.FileName = MyFolder.FullName + "MyProgram.exe";
                    myProcess.Start();
                }
...
Рейтинг: 0 / 0
15.03.2011, 10:24
    #37165059
sedan13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск консольного приложения из WinForms
bazile,
моё почтение
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
29.08.2013, 12:01
    #38380809
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск консольного приложения из WinForms
А можно немного обновить и расширить данную тему?
У меня следующая ситуация: есть консольное приложение, которое я запускаю из своего сервиса. Благодаря параметрам, оно запускается в режиме слушания и появляется текст Listening...
Вот его то и не получается получить. хотя когда я запускаю это приложение из командной строки, всё ок.
дебаг показывает, что выполнение проходит успешно p.Start(); тоесть видимо приложение запускается?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
            
p = new System.Diagnostics.Process();
p.StartInfo.FileName = "C:\\ПУТЬ\\PCATTCP.exe";
p.StartInfo.Arguments = "-c -r -p "+ ttcpPort.ToString();
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.Start();
StreamReader myStreamReader = p.StandardOutput;
string output = myStreamReader.ReadToEnd();



но в output пусто...
что я делаю не так?
...
Рейтинг: 0 / 0
29.08.2013, 12:02
    #38380814
Syrex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск консольного приложения из WinForms
А в переменной output есть что-нибудь?
...
Рейтинг: 0 / 0
29.08.2013, 12:05
    #38380818
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск консольного приложения из WinForms
Syrex, там пусто. не null, а ""
...
Рейтинг: 0 / 0
29.08.2013, 12:23
    #38380864
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск консольного приложения из WinForms
Может быть приложение так и не запустилось? как это проверить можно?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / запуск консольного приложения из WinForms / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]