Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 27
1

Не работает программа exe, запускаемая из проекта

09.06.2015, 00:12. Показов 994. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне нужно запустить файл midi2ascii.exe из C#-проекта, который конвертирует midi-файл в txt-файл, пыталась сделать это следующими способами:
1)
C#
1
2
3
4
5
6
string midi2asciiProgramName = @"D:\midi2ascii.exe";
            string midiFileName = @"D:\81979.mid";
            string textFileName = @"D:\81979.txt";
            string commands = "-c -s";
            string bigger = ">";
            System.Diagnostics.Process.Start(midi2asciiProgramName, midi2asciiProgramName + commands + midiFileName + bigger + textFileName);
2)
C#
1
2
3
4
5
6
7
string standard = @"C:\Documents and Settings\ADMIN>";
string midi2asciiProgramName = @"D:\midi2ascii.exe";
string midiFileName = @"D:\81979.mid";
string textFileName = @"D:\81979.txt";
string commands = "-c -s";
string bigger = ">";
System.Diagnostics.Process.Start(midi2asciiProgramName, standard + midi2asciiProgramName + " " + commands + " "+ midiFileName + " " + bigger + " " + textFileName);
3) Такой же, как и предыдущий, но вместо
C#
1
System.Diagnostics.Process.Start(midi2asciiProgramName, standard + midi2asciiProgramName + " " + commands + " "+ midiFileName + " " + bigger + " " + textFileName);
написала
C#
1
System.Diagnostics.Process.Start(standard + midi2asciiProgramName + " " + commands + " "+ midiFileName + " " + bigger + " " + textFileName);
4)
C#
1
2
3
4
5
6
7
8
9
string midiFileName = @"D:\81979.mid";
string textFileName = @"D:\81979.txt";
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = @"D:\midi2ascii.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "-c -s" + midiFileName + " > " + textFileName;
System.Diagnostics.Process.Start(startInfo);
(Сделано, но не записывает данные в txt-файл).
5) Поменяла строку
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
System.Diagnostics.Process.Start(startInfo);
на
try
{
// Start the process with the info we specified.
// Call WaitForExit and then the using statement will close.
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
}
catch
{
// Log error.
}
Но ни один из этих способов не сработал так, как мне было нужно. Подскажите, что с этим делать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2015, 00:12
Ответы с готовыми решениями:

Неправильно работает программа запускаемая через автозапуск
Здравствуйте вопрос в следующем , у меня есть программа которая должна запускаться , сохранять...

Сделать текущей директорию, в которой находится запускаемая программа
Проблема! При запуске таким методом start ."\ProgramFiles\Steam Desktop Authenticator.exe" Моя...

При вызове через BAT запускаемая программа не создаёт файлы c отчётами
Есть программа (написана на Делфи10), которая при запуске создаёт два файла с отчётами о работе...

При компиляции проекта в VFP6.0 не работает .exe
Привет всем ! Такой вопрос: делаю из проекта екзешник, а он не работает. Выдаёт ошибку. В инфе...

8
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
09.06.2015, 03:36 2
Vi Sparks, перенаправление ввода/вывода с помощью больше/меньше работает только при запуске из под интерпретатора командной строки. Другие ошибки заключаются в передаче неправильного пути к exe и/или аргументов командной строки. Вот такой код должен решить проблему:
C#
1
2
3
4
5
6
7
8
9
10
11
12
string midiFileName = @"D:\81979.mid";
string textFileName = @"D:\81979.txt";
 
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = @"D:\midi2ascii.exe";
p.StartInfo.Arguments = "-c -s" + midiFileName;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
File.WriteAllText(textFileName, output);
1
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 27
09.06.2015, 15:20  [ТС] 3
OwenGlendower, увы, этот код не работает.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
09.06.2015, 15:54 4
Vi Sparks, в чем именно это выражается?
0
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 27
09.06.2015, 16:29  [ТС] 5
OwenGlendower, в том что после отработки этой программы файл 81979.txt по-прежнему пуст. Оказалось, что переменной output присваивается пустая строка.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
09.06.2015, 16:59 6
Vi Sparks, если код выполняется без ошибок и переменная output остатется пустой, то значит программа ничего не выводит в поток стандартного вывода. При запуске их командной строки файл создается?
0
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 27
09.06.2015, 17:09  [ТС] 7
OwenGlendower, да.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
09.06.2015, 17:49 8
Vi Sparks, интересно. Можешь выложить exe сюда или на файлообменник какой-нибудь?
0
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 27
09.06.2015, 17:57  [ТС] 9
OwenGlendower, я просто поставила пробел перед -c и после -s в том коде, который вы мне прислали и, слава Господу, он работает! Спасибо вам огромное.
0
09.06.2015, 17:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2015, 17:57
Помогаю со студенческими работами здесь

Вызов exe одного проекта exe другого проекта
Есть проект, нажимая на вкладку меню, должен запускаться exe другого проекта. Как сделать? Помогите...

Программа из памяти работает, а из exe-шника нет
Здравствуйте. Написал небольшую, но полезную в хозяйстве программу program del; uses dos; ...

Программа работает некорректно при запуске из *.exe
Появилось весьма интересная проблема: при запуске моей программы из *.exe-файла она работает...

Не правильно работает программа посимвольного чтения из exe и записи в txt
Вся суть программы заключается в посимвольном считывании кода из .exe файла, и запись в .txt файл в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru