Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Общие вопросы .NET
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 22.11.2008, 18:28   #1
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Адрес: Minsk City
Сообщений: 476
Репутация: 41
По умолчанию запуск файла С#

запускаю компилятор tasm.exe c параметрами /zi /z s
где, s - путь к файлу который нужно скомпилировать (без расширения, компилятор сам выбирает расширение)
через эту сроку:
Process.Start("tasm.exe", "/zi /z "+s);

в результате чего создаётся скомпилированный файл с расширением obj

далее

запускаю компилятор tlink.exe c параметрами /v /x s
Process.Start("tlink.exe", "/v /x " + s);
где, s - путь к файлу который нужно скомпилировать (без расширения, компилятор сам выбирает obj файл)

в результате должен создаться exe файл программы
второй компилятор запускается, но exe файл не компилируется

проверял на другом компьютере - компилируется... в чём может быть проблема...
в обоих случаях s = G:\ASM\pr1
__________________
Life if about choices
Make the right choice
TaTT DoGG вне форума   Ответить с цитированием
Старый 22.11.2008, 18:32   #2
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Адрес: Minsk City
Сообщений: 476
Репутация: 41
По умолчанию

проблему нашел, но не знаю почему так получается...
если компилировать из C# то exe не создаётся
если закрыть C# и запустить программу, то exe скомпилируется
может где-нибудь нужно галку поставить, чтобы exe компилировался?
__________________
Life if about choices
Make the right choice
TaTT DoGG вне форума   Ответить с цитированием
Старый 22.11.2008, 19:09   #3
alexBlack
Профессионал
 
Регистрация: 12.10.2007
Адрес: -
Сообщений: 1,204
Репутация: 920
По умолчанию

Выходные пути не заданы. obj-файл помещается в текущий каталог (скорее всего каталог, где лежит exe-файл проекта), поэтому tlink его не находит.

Добавьте еще указание пути выходных файлов:
Process.Start("tasm.exe", "/zi /z "+s+" ,"+s);
Process.Start("tlink.exe", "/v /x " + s+" ,"+s);
alexBlack вне форума   Ответить с цитированием
Старый 22.11.2008, 19:12   #4
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Адрес: Minsk City
Сообщений: 476
Репутация: 41
По умолчанию

благодарю
__________________
Life if about choices
Make the right choice
TaTT DoGG вне форума   Ответить с цитированием
Старый 24.11.2008, 03:35   #5
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Адрес: Minsk City
Сообщений: 476
Репутация: 41
По умолчанию

с каким параметром нужно запускать файл, чтобы окна не было видно?
__________________
Life if about choices
Make the right choice
TaTT DoGG вне форума   Ответить с цитированием
Старый 24.11.2008, 09:37   #6
alexBlack
Профессионал
 
Регистрация: 12.10.2007
Адрес: -
Сообщений: 1,204
Репутация: 920
По умолчанию

Посмотрите пример:

Код:
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.Arguments = @"/c dir c:\windows /w";
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.Start();

           // А это на Ваш второй вопрос - про чтение вывода 
            string s = p.StandardOutput.ReadToEnd();
            p.WaitForExit();

            Console.WriteLine(s);
alexBlack вне форума   Ответить с цитированием
Старый 24.11.2008, 18:03   #7
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Адрес: Minsk City
Сообщений: 476
Репутация: 41
По умолчанию

делаю так:
Код:
Process p = new Process();
            p.StartInfo.UseShellExecute = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = "tasm.exe";
            p.StartInfo.Arguments = @"/zi /z " + s + ".asm >> tasm.txt";
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.Start();
            string f = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
            MessageBox.Show(f);
виснет...
__________________
Life if about choices
Make the right choice
TaTT DoGG вне форума   Ответить с цитированием
Старый 24.11.2008, 20:53   #8
alexBlack
Профессионал
 
Регистрация: 12.10.2007
Адрес: -
Сообщений: 1,204
Репутация: 920
По умолчанию

Цитата:
Сообщение от TaTT DoGG Посмотреть сообщение
делаю так:

виснет...
Виснет ? или:

Цитата:
Unhandled Exception: System.InvalidOperationException: The Process object must have the UseShellExecute property set to false in order to redirect IO streams...
p.StartInfo.UseShellExecute = false;

и уже как-то определитесь. Или RedirectStandardOutput или перенаправление >>. Не нужно делать все сразу. Кстати, Ваш код у меня работает (c UseShellExecute = false). Вывод естественно в t.asm.
alexBlack вне форума   Ответить с цитированием
Старый 24.11.2008, 23:08   #9
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Адрес: Minsk City
Сообщений: 476
Репутация: 41
По умолчанию

Код:
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "tasm.exe";
p.StartInfo.Arguments = @"/zi /z " + s + ".asm";
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
string f = p.StandardOutput.ReadToEnd();
textBox3.Text = f;
p.WaitForExit();
Код:
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
не работает теперь - показывает окно

в textBox3.Text ничего не выводится...
__________________
Life if about choices
Make the right choice
TaTT DoGG вне форума   Ответить с цитированием
Старый 25.11.2008, 00:01   #10
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Адрес: Minsk City
Сообщений: 476
Репутация: 41
По умолчанию

решил отдельно проект создать:
вот код:
Код:
using System;
using System.IO;
using System.Windows.Forms;
using System.Diagnostics;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();         
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string t = Directory.GetCurrentDirectory();
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = t+@"\TASM.EXE";
            p.StartInfo.Arguments = @"/zi /z "+t+@"\PR1.ASM";
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.Start();
            string f = p.StandardOutput.ReadToEnd();
            textBox1.Text = f;
            p.WaitForExit();            
        }
    }
}
при нажатии на кнопку выбивает сообщение в строке p.Start();
__________________
Life if about choices
Make the right choice
TaTT DoGG вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск файла на исполнение Doloto Общие вопросы C/C++ 4 03.04.2008 01:15
Прописать запуск exe-файла Manitu Помощь студентам 4 07.03.2008 11:31
Запуск exe-файла из приложения TerVovik Помощь студентам 4 12.12.2007 17:21
Запуск файла по пути John_chek Общие вопросы Delphi 3 29.05.2007 12:38
запуск некоего файла Viten2 Общие вопросы Delphi 4 29.01.2007 21:04


15:34.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru