मैं C # से एक प्रक्रिया कैसे शुरू करूं?


जवाबों:


220

जैसा कि मैट हैमिल्टन ने सुझाव दिया, त्वरित दृष्टिकोण जहां आपके पास प्रक्रिया पर सीमित नियंत्रण है, System.Diagnostics.Process वर्ग पर स्थैतिक प्रारंभ विधि का उपयोग करना है ...

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

विकल्प प्रक्रिया वर्ग के एक उदाहरण का उपयोग करना है। यह शेड्यूलिंग सहित इस प्रक्रिया पर बहुत अधिक नियंत्रण की अनुमति देता है, यह जिस प्रकार की विंडो में चलेगा और मेरे लिए सबसे उपयोगी होगा, प्रक्रिया समाप्त होने की प्रतीक्षा करने की क्षमता।

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.

इस विधि से मैंने उल्लेख किया है की तुलना में कहीं अधिक नियंत्रण की अनुमति देता है।


मैंने इस विधि का उपयोग आउटलुक का उपयोग करते हुए .msg फाइल को खोलने के लिए किया है, लेकिन जब मैं एक और .msg फाइल को खोलने का प्रयास करता हूं, तो यह एक अन्य आउटलुक को खोल देता है। क्या वर्तमान प्रक्रिया का पुन: उपयोग करने और किसी अन्य दृष्टिकोण को खोलने से बचने का कोई तरीका है? stackoverflow.com/questions/28534358/…
user1166085

4
आपको एक प्रयोग कथन या प्रक्रिया के निपटान के साथ-साथ stackoverflow.com/questions/16957320/…
Hoppe

25

आप प्रक्रिया शुरू करने के लिए System.Diagnostics.Process.Start पद्धति का उपयोग कर सकते हैं । आप एक URL को स्ट्रिंग के रूप में भी पास कर सकते हैं और यह डिफ़ॉल्ट ब्राउज़र को बंद कर देगा।


14

जैसा कि मैट कहते हैं, Process.Start का उपयोग करें ।

आप एक URL, या एक दस्तावेज़ पास कर सकते हैं। वे पंजीकृत आवेदन द्वारा शुरू किए जाएंगे।

उदाहरण:

Process.Start("Test.Txt");

यह Text.Txt लोड के साथ Notepad.exe शुरू करेगा।


4
इस प्रकार के लिए कोई कार्यक्रम पंजीकृत नहीं होने पर क्या होता है?
LC

2
@LC Win32Exception(0x80004005) "इस ऑपरेशन के लिए कोई फ़ाइल निर्दिष्ट फ़ाइल से जुड़ी नहीं है"
Yousha Aleayoub

9

मैंने अपने कार्यक्रम में निम्नलिखित का उपयोग किया।

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

यह थोड़ा बुनियादी है, लेकिन यह मेरे लिए काम करता है।


1
जब आपके उदाहरण के रूप में URL के साथ उपयोग किया जाता है, तो URL को खोलने के लिए सिस्टम के डिफ़ॉल्ट वेब ब्राउज़र का उपयोग करने का भी लाभ होता है।
बजे

अगर मैं इसका उपयोग करता हूं तो यह एक सर्वर है, क्या यह सर्वर ब्राउज़र या क्लाइंट ब्राउज़र में खुलेगा?
यह


5

आप किसी भी एप्लिकेशन को चलाने के लिए इस सिंटैक्स का उपयोग कर सकते हैं:

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

और एक URL के लिए एक ही है। इसके बीच बस अपना URL लिखें ()

उदाहरण:

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



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 का एक से अधिक उदाहरण चल रहा है।


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 नमूना है। आपको कोशिश करनी चाहिए और थोड़ा सुधारना चाहिए।


2

उदाहरण के लिए Microsoft Word प्रारंभ करने के लिए, इस कोड का उपयोग करें:

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

अधिक स्पष्टीकरण के लिए, इस लिंक को देखें


0

अगर विंडोज पर उपयोग कर रहे हैं

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

नेट फ्रेमवर्क के लिए काम करता है, लेकिन नेट कोर 3.1 के लिए भी UseShellExecute को सही पर सेट करना होगा

Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.