【问题标题】:Problem with running exe file from c#从c#运行exe文件的问题
【发布时间】:2011-07-14 18:30:14
【问题描述】:

当我执行一个 exe 文件 (PVFProject15.exe) 时,它会从一个输入文件 (inputFile.txt) 中读取数据并将结果打印到另一个文件 (outputFile.txt) 中。当我双击它时,exe文件运行良好;它会打开控制台窗口,该窗口在创建输出文件之前一直处于打开状态。但是,当我从 c# 运行 (PVFProject15.exe) 时,控制台窗口会非常快速地打开和关闭,并且永远不会创建输出文件。

非常感谢您的帮助,因为我一整天都在努力解决这个问题,但从未找到答案。下面是我的代码。

private void button1_Click(object sender, EventArgs e)

{
        Process runFortran = new Process();
        try
        {
            runFortran.StartInfo.FileName = "C:\\temp\\trial\\PVFProject15.exe";
            runFortran.Start();
            runFortran.WaitForExit(); 
        }
        catch (Exception exc)
        {
            MessageBox.Show(exc.Message);
        }
    }

提前谢谢你。

萨法

【问题讨论】:

  • 我已经用记事本和我创建的其他控制台应用程序尝试了你的代码,它似乎工作正常。你有 PVFProject15.exe 的代码吗?
  • 您没有将 StartInfo.WorkingDirectory 设置为 @"c:\temp\trial"。很多写得不好的程序都无法生存。

标签: c# .net exe


【解决方案1】:

可能 PVFProject15.exe 需要将当前目录设置为 C:\temp\trial

【讨论】:

    【解决方案2】:

    如果PVFProject15.exe 使用相对路径写入文件,请在您启动主程序引导程序的目录中查找outputFile.txt

    【讨论】:

      【解决方案3】:

      当我尝试从基于 C# 的软件启动一些 .exe 和 .hta 时,我也遇到了同样的问题。 我开始寻找 Mike Mozhaev 的解决方案和答案,让我找到正确的方向。 在您的代码中,您需要使用: StartInfo.WorkingDirectory = Convert.ToString( System.IO.Directory.GetParent(appPath));

      所以代码必须是这样的:

       if (File.Exists(appPath))
                      {
                          Process runProcess = new Process();
                          runProcess.StartInfo.WorkingDirectory = Convert.ToString( System.IO.Directory.GetParent(appPath));
                          runProcess.StartInfo.UseShellExecute= true;
                          runProcess.StartInfo.FileName = appPath;
                          runProcess.Start();
      
                      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-22
        • 1970-01-01
        • 1970-01-01
        • 2014-03-26
        • 2014-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多