Bir işlemi C # ile nasıl başlatırım?


Yanıtlar:


220

Matt Hamilton tarafından önerildiği gibi, süreç üzerinde sınırlı kontrole sahip olduğunuz hızlı yaklaşım, System.Diagnostics.Process sınıfında statik Start yöntemini kullanmaktır ...

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

Alternatif olarak Process sınıfının bir örneğini kullanmaktır. Bu, zamanlama, içinde çalışacağı pencerenin türü ve benim için en yararlı olanı, sürecin bitmesini bekleme yeteneği dahil olmak üzere süreç üzerinde çok daha fazla kontrole izin verir.

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.

Bu yöntem bahsettiğimden çok daha fazla kontrole izin veriyor.


outlook kullanarak .msg dosyasını açmak için bu yöntemi kullandım ama başka bir .msg dosyasını açmaya çalıştığınızda, başka bir görünüm açtı. mevcut süreci yeniden kullanmanın ve başka bir bakış açılmasını önlemenin bir yolu var mı? stackoverflow.com/questions/28534358/…
user1166085

4
Bir kullanım ifadesi kullanmalı veya işlemi imha etmelisiniz stackoverflow.com/questions/16957320/…
Hoppe


14

Matt'in dediği gibi Process.Start'ı kullanın .

Bir URL veya belge iletebilirsiniz. Kayıtlı uygulama tarafından başlatılacaklardır.

Misal:

Process.Start("Test.Txt");

Bu, Notepad.exe'yi Text.Txt yüklü olarak başlatacaktır.


4
Bu tür için kayıtlı bir program yoksa ne olur?
LC

2
@LC Win32Exception(0x80004005) "Bu işlem için belirtilen dosyayla ilişkili uygulama yok"
Yousha Aleayoub

9

Kendi programımda aşağıdakileri kullandım.

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

Biraz basit, ama bu işi benim için yapıyor.


1
Örneğinizin yaptığı gibi bir URL ile kullanıldığında, URL'yi açmak için sistemin varsayılan web tarayıcısını kullanma avantajı da vardır.
Lemonseed

Eğer bu sunucuyu kullanırsam, sunucu tarayıcısında mı yoksa istemci tarayıcısında mı açılır?
Bu bir tuzak

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

5

Bu sözdizimini herhangi bir uygulamayı çalıştırmak için kullanabilirsiniz:

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

URL için de aynı. URL'nizi bunun arasına yazmanız yeterlidir ().

Misal:

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

4

Process sınıfını kullanın . MSDN belgelerinde bunun nasıl kullanılacağı ile ilgili bir örnek vardır.


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

Bunu beyan et

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

Ve bunu işlevinizin içine koyun ("checkInstalled" öğesinin isteğe bağlı olduğunu unutmayın, ancak kullanırsanız, uygulamanız gerekir)

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

Not: birden fazla .exe örneği çalışırken, bu çalışıp çalışmadığından emin değilim.


2

Ekleyin using System.Diagnostics;.

Ve sonra buna Process.Start("Paste your URL string here!");

Bunun gibi bir şey deneyin:

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

Lütfen örnek bir ASP.NET sayfası olduğunu unutmayın. Biraz denemelisin ve doğaçlama yapmalısın.



0

Windows'ta kullanıyorsanız

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

Net Framework için çalışır, ancak Net core 3.1 için de UseShellExecute öğesini true değerine ayarlamanız gerekir

Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.