【问题标题】:How do I start a process from C#?如何从 C# 启动进程?
【发布时间】:2010-09-15 22:52:55
【问题描述】:

如何启动进程,例如在用户单击按钮时启动 URL?

【问题讨论】:

    标签: c# .net windows process process.start


    【解决方案1】:

    正如 Matt Hamilton 所建议的,您对流程进行有限控制的快速方法是在 System.Diagnostics.Process 类上使用静态 Start 方法...

    using System.Diagnostics;
    ...
    Process.Start("process.exe");
    

    另一种方法是使用 Process 类的实例。这允许对进程进行更多控制,包括调度、它将在其中运行的窗口类型,以及对我来说最有用的是等待进程完成的能力。

    using System.Diagnostics;
    ...
    Process process = new Process();
    // Configure the process using the StartInfo properties.
    process.StartInfo.FileName = "process.exe";
    process.StartInfo.Arguments = "-n";
    process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
    process.Start();
    process.WaitForExit();// Waits here for the process to exit.
    

    这种方法可以实现比我提到的更多的控制。

    【讨论】:

    【解决方案2】:

    您可以使用System.Diagnostics.Process.Start 方法来启动一个进程。您甚至可以将 URL 作为字符串传递,它会启动默认浏览器。

    【讨论】:

      【解决方案3】:

      正如马特所说,使用Process.Start

      您可以传递 URL 或文档。它们将由注册的应用程序启动。

      例子:

      Process.Start("Test.Txt");
      

      这将启动 Notepad.exe 并加载 Text.Txt。

      【讨论】:

      • 如果没有为此类型注册程序会怎样?
      • @LC Win32Exception (0x80004005) "没有应用程序与此操作的指定文件关联"
      【解决方案4】:

      我在自己的程序中使用了以下内容。

      Process.Start("http://www.google.com/etc/etc/test.txt")
      

      它有点基本,但它对我有用。

      【讨论】:

      • 当与您的示例一样使用 URL 时,这还具有使用系统默认 Web 浏览器打开 URL 的优点。
      【解决方案5】:
      var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "/YourSubDirectory/yourprogram.exe");
      Process.Start(new ProcessStartInfo(path));
      

      【讨论】:

        【解决方案6】:
        class ProcessStart
        {
            static void Main(string[] args)
            {
                Process notePad = new Process();
        
                notePad.StartInfo.FileName   = "notepad.exe";
                notePad.StartInfo.Arguments = "ProcessStart.cs";
        
                notePad.Start();
            }
        }
        

        【讨论】:

          【解决方案7】:

          使用Process 类。 MSDN 文档中有一个如何使用它的示例。

          【讨论】:

            【解决方案8】:

            您可以使用此语法运行任何应用程序:

            System.Diagnostics.Process.Start("Example.exe");
            

            对于 URL 也是如此。只需在 () 之间写下您的 URL。

            例子:

            System.Diagnostics.Process.Start("http://www.google.com");
            

            【讨论】:

              【解决方案9】:

              声明

              [DllImport("user32")]
              private static extern bool SetForegroundWindow(IntPtr hwnd);
              [DllImport("user32")]
              private static extern bool ShowWindowAsync(IntPtr hwnd, int a);
              

              并将它放在你的函数中(注意“checkInstalled”是可选的,但如果你要使用它,你必须实现它)

              if (ckeckInstalled("example"))
              {
                  int count = Process.GetProcessesByName("example").Count();
                  if (count < 1)
                      Process.Start("example.exe");
                  else
                  {
                      var proc = Process.GetProcessesByName("example").FirstOrDefault();
                      if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
                      {
                          SetForegroundWindow(proc.MainWindowHandle);
                          ShowWindowAsync(proc.MainWindowHandle, 3);
                      }
                  }
              }
              

              注意:我不确定这在运行多个 .exe 实例时是否有效。

              【讨论】:

                【解决方案10】:

                如果在 Windows 上使用

                Process process = new Process();
                process.StartInfo.FileName = "Test.txt";
                process.Start();
                

                适用于 .Net Framework,但对于 Net core 3.1 也需要将 UseShellExecute 设置为 true

                Process process = new Process();
                process.StartInfo.FileName = "Test.txt";
                process.StartInfo.UseShellExecute = true;
                process.Start();
                

                【讨论】:

                • 使用 System.Diagnostics;
                【解决方案11】:

                包括using System.Diagnostics;

                然后调用这个Process.Start("Paste your URL string here!");

                试试这样的:

                using System.Web.UI;
                using System.Web.UI.WebControls;
                using System.Diagnostics;
                
                namespace btnproce
                {
                    public partial class WebForm1 : System.Web.UI.Page
                    {
                        protected void Page_Load(object sender, EventArgs e)
                        {
                
                        }
                
                        protected void Button1_Click(object sender, EventArgs e)
                        {
                            string t ="Balotelli";
                            Process.Start("http://google.com/search?q=" + t);
                        }
                    }
                }
                

                请注意,这是一个示例 ASP.NET 页面作为示例。你应该试着即兴发挥一点。

                【讨论】:

                  【解决方案12】:

                  例如,要启动Microsoft Word,请使用以下代码:

                  private void button1_Click(object sender, EventArgs e)
                  {
                      string ProgramName = "winword.exe";
                      Process.Start(ProgramName);
                  }
                  

                  更多解释,请查看this link

                  【讨论】:

                    【解决方案13】:

                    您可以使用以下语法:

                    private void button1_Click(object sender, EventArgs e)  {
                       System.Diagnostics.Process.Start(/*your file name goes here*/);
                    }
                    

                    甚至这个:

                    using System;
                    using System.Diagnostics;
                    //rest of the code
                    
                    private void button1_Click(object sender, EventArgs e)  {
                       Process.Start(/*your file name goes here*/);
                    }
                    

                    两种方法都执行相同的任务。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2017-05-05
                      • 2011-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多