有什么方法可以在后台运行进程吗?

Jad*_*ias 3 .net c# nohup

有什么命令行或.NET方法在后台运行一个进程,隐藏它试图打开的任何窗口?

已经尝试过:

 var process = new Process()
 {
      StartInfo = new ProcessStartInfo()
      {
          CreateNoWindow = true,
          WindowStyle = ProcessWindowStyle.Hidden,
          FileName = TheRealExecutableFileNameHere
      }
 }
 process.Start();
Run Code Online (Sandbox Code Playgroud)

到目前为止没有成功

Ben*_*old 15

我查看了我的代码,它看起来几乎与你的代码相同:

ProcessStartInfo psi = new ProcessStartInfo(fileName, arguments)
{
   CreateNoWindow = true,
   WindowStyle = ProcessWindowStyle.Hidden,
   UseShellExecute = false,
   RedirectStandardOutput = true                                               
};

Process process = Process.Start(psi);
Run Code Online (Sandbox Code Playgroud)

唯一值得注意的区别(格式化和我们选择的PSI构造函数除外)是我使用UseShellExecute和RedirectStandardOutput,因为我需要读取ran过程的结果.

我发现上面的代码一直在XP和Vista上运行一个隐藏的过程.但是,我也发现,你可能会遇到同样的问题,一个隐藏的进程可能会启动另一个默认情况下不被隐藏的进程.换句话说,如果您启动隐藏的流程A和流程A,则启动流程B,您无法控制流程B的显示方式.可能会显示您无法控制的Windows.

希望这会有帮助.祝好运.


Ken*_* K. 7

查看Matlab引擎.

如果这种方法符合您的需求,那么CodeProject 上甚至会有一篇有趣的文章.

  • 在后台运行进程的一种方法是...使用matlab引擎.... 我肯定错过了什么. (3认同)

Mar*_*ood 5

您是否尝试过使用带有/ B开关的Microsoft DOS 启动命令?

Microsoft DOS启动命令

例如,

START /B cmd.exe
Run Code Online (Sandbox Code Playgroud)

  • 更具体地说,用Process.Start("cmd.exe",string.Format("/ c start \"notitle \"/ B \"{0} \"{1}"替换Process.Start(exe,args)) ,exe,args).如果您不希望命令窗口进入视图,则使用ProcessStartInfo,并设置UseShellExecute = false. (3认同)