Bagaimana cara memulai proses dari C #?


Jawaban:


220

Seperti yang disarankan oleh Matt Hamilton, pendekatan cepat di mana Anda memiliki kontrol terbatas atas proses, adalah dengan menggunakan metode Mulai statis pada System.Diagnostics. Kelas proses ...

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

Alternatifnya adalah menggunakan turunan dari kelas Proses. Ini memungkinkan lebih banyak kontrol atas proses termasuk penjadwalan, jenis jendela yang akan dijalankan dan, yang paling berguna bagi saya, kemampuan untuk menunggu proses selesai.

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.

Metode ini memungkinkan kontrol jauh lebih banyak daripada yang saya sebutkan.


saya menggunakan metode ini untuk membuka file .msg menggunakan outlook tetapi ketika saya mencoba untuk membuka file .msg lain, itu membuka pandangan lain. Adakah cara untuk menggunakan kembali proses saat ini dan menghindari membuka pandangan lain? stackoverflow.com/questions/28534358/…
user1166085

4
Anda harus menggunakan pernyataan menggunakan atau membuang proses juga stackoverflow.com/questions/16957320/…
Hoppe


14

Seperti yang Matt katakan, gunakan Process.Start .

Anda dapat mengirimkan URL, atau dokumen. Mereka akan dimulai oleh aplikasi terdaftar.

Contoh:

Process.Start("Test.Txt");

Ini akan memulai Notepad.exe dengan Text.Txt dimuat.


4
Apa yang terjadi, jika tidak ada program yang terdaftar untuk jenis ini?
LC

2
@LC Win32Exception(0x80004005) "Tidak ada aplikasi yang dikaitkan dengan file yang ditentukan untuk operasi ini"
Yousha Aleayoub

9

Saya menggunakan yang berikut ini di program saya sendiri.

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

Ini agak mendasar, tetapi itu berhasil bagi saya.


1
Ketika digunakan dengan URL seperti contoh Anda, ini juga memiliki keuntungan menggunakan browser web default sistem untuk membuka URL.
Biji Lemon

jika saya menggunakan ini adalah server, apakah itu akan terbuka di browser server, atau browser klien?
Ini jebakan

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

5

Anda dapat menggunakan sintaks ini untuk menjalankan aplikasi apa pun:

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

Dan yang sama untuk URL. Cukup tulis URL Anda di antara ini ().

Contoh:

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


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

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

        notePad.Start();
    }
}

3

Nyatakan ini

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

Dan letakkan ini di dalam fungsi Anda (perhatikan bahwa "checkInstalled" adalah opsional, tetapi jika Anda akan menggunakannya, Anda harus mengimplementasikannya)

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

CATATAN: Saya tidak yakin apakah ini berfungsi ketika lebih dari satu instance dari .exe berjalan.


2

Sertakan using System.Diagnostics;.

Dan kemudian panggil ini Process.Start("Paste your URL string here!");

Coba sesuatu seperti ini:

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

Harap perhatikan bahwa ini adalah contoh halaman ASP.NET sebagai contoh. Anda harus mencoba dan berimprovisasi sedikit.


2

Untuk memulai Microsoft Word misalnya, gunakan kode ini:

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

Untuk penjelasan lebih lanjut, lihat tautan ini .


0

Jika menggunakan Windows

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

Bekerja untuk .Net Framework tetapi untuk Net core 3.1 juga perlu mengatur UseShellExecute menjadi true

Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.