如何从C#启动进程?

时间:2008-10-08 07:46:39

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

如何启动流程,例如在用户点击按钮时启动网址?

13 个答案:

答案 0 :(得分:200)

正如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.

这种方法比我提到的控制更多。

答案 1 :(得分:22)

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

答案 2 :(得分:9)

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

您可以传递网址或文档。它们将由注册申请启动。

示例:

Process.Start("Test.Txt");

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

答案 3 :(得分:7)

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

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

这有点基础,但它对我有用。

答案 4 :(得分:6)

var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "/YourSubDirectory/yourprogram.exe");
Process.Start(new ProcessStartInfo(path));

答案 5 :(得分:5)

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

答案 6 :(得分:5)

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

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

和URL一样。只需在()

之间写下您的网址即可

示例:

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

答案 7 :(得分:3)

声明此

[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的多个实例正在运行时是否有效。

答案 8 :(得分:3)

class ProcessStart
{
    static void Main(string[] args)
    {
        Process notePad = new Process();

        notePad.StartInfo.FileName   = "notepad.exe";
        notePad.StartInfo.Arguments = "ProcessStart.cs";

        notePad.Start();
    }
}

答案 9 :(得分:2)

加入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页面。你应该尝试一下即兴创作。

答案 10 :(得分:0)

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

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

有关详细说明,请查看this link

答案 11 :(得分:0)

如果在Windows上使用

$ java -jar $(sbt "print assembly::assemblyOutputPath" --error)
Hello world!

适用于.Net Framework但适用于Net core 3.1的作品,还需要将UseShellExecute设置为true

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

答案 12 :(得分:0)

您可以使用以下语法:

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*/);
}

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