web-dev-qa-db-ja.com

C#からプロセスを開始するにはどうすればよいですか?

ユーザーがボタンをクリックしたときにURLを起動するなど、プロセスを開始するにはどうすればよいですか?

139
WanKenoobi

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.

この方法は、私が言及したよりもはるかに多くの制御を可能にします。

202
Andy McCluggage

System.Diagnostics.Process.Start メソッドを使用してプロセスを開始できます。 URLを文字列として渡すこともでき、デフォルトのブラウザが起動します。

23
Matt Hamilton

Mattが言うように、 Process.Start を使用します。

URLまたはドキュメントを渡すことができます。登録されたアプリケーションによって開始されます。

例:

Process.Start("Test.Txt");

これにより、Text.Txtが読み込まれた状態でNotepad.exeが起動します。

9
GvS

私は自分のプログラムで以下を使用しました。

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

それは少し基本的ですが、それは私のために仕事をします。

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

次の構文を使用して、任意のアプリケーションを実行できます。

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

URLについても同じです。この()の間にURLを書くだけです。

例:

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

Process クラスを使用します。 MSDNドキュメントには、使用方法の例があります。

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

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

        notePad.Start();
    }
}
3
Ravi Kumar G N

これを宣言する

[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の複数のインスタンスが実行されているときにこれが機能するかどうかはわかりません。

3
Carla Jesus

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ページであることに注意してください。少し試してみてください。

2
AVIK DUTTA

Microsoft Word を開始するには、次のコードを使用します。

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

詳細については、 このリンク をご覧ください。

0
user4340666