2009-05-11 1 views
1

У меня есть приложения Windows Forms которым работает другой консольного приложения здесь является частью кодаЗапуск консольное приложение из C#, но приложение не может создать файл

prog = new Process(); 
prog.StartInfo.FileName = exefile; 

Консоль приложения должны создать файл, но при запуске этого приложения из C# он не создает какой-либо файл , когда им работает консольное приложение с двойным щелчком он отлично работает здесь часть кода из «EXEFILE» (его на C++)

freopen("file.in","r",stdin); 
freopen("file.out","w",stdout); 
printf("somedata\n"); 

«file.in», безусловно, существует

+0

Как Андрей спросил: вы действуете в любом случае вызывая prog.Start() в любом месте ... можете ли вы проверить, действительно ли консольное приложение выполняется вашим приложением? –

ответ

2

Наиболее вероятным является то, что вам нужно установить рабочий путь:

prog.StartInfo.WorkingDirectory = ... 

то есть я думаю, что не может найти file.in в папке приложения в тока.

1

Вам нужно добавить эту строку всякий раз, когда вы хотите, чтобы начать процесс:

prog.Start(); 

Here is the link to the MSDN page for Process.Start. Есть несколько перегруженных, которые вы можете рассмотреть.

0

Я хотел бы предложить,

  • исключения ручки, чтобы увидеть, что происходит не так
  • , как упоминалось выше убедитесь, что вы вызвать начало метод

Здесь() это фрагмент кода из MSDN , которые вы, возможно, захотите сослаться

Process myProcess = new Process(); 

     try 
     { 
      // Get the path that stores user documents. 
      string myDocumentsPath = 
       Environment.GetFolderPath(Environment.SpecialFolder.Personal); 

      myProcess.StartInfo.FileName = myDocumentsPath + "\\MyFile.doc"; 
      myProcess.StartInfo.Verb = "Print"; 
      myProcess.StartInfo.CreateNoWindow = true; 
      myProcess.Start(); 
     } 
     catch (Win32Exception e) 
     { 
      if(e.NativeErrorCode == ERROR_FILE_NOT_FOUND) 
      { 
       Console.WriteLine(e.Message + ". Check the path."); 
      } 

      else if (e.NativeErrorCode == ERROR_ACCESS_DENIED) 
      { 
       // Note that if your word processor might generate exceptions 
       // such as this, which are handled first. 
       Console.WriteLine(e.Message + 
        ". You do not have permission to print this file."); 
      } 
     } 
Смежные вопросы