Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# एप्लिकेशन से एक्सटर्नल एप्लिकेशन कैसे चलाएं?

C# एप्लिकेशन से एक्सटर्नल एप्लिकेशन Process क्लास का उपयोग करके चलाया जा सकता है। एक प्रोसेस आपके कंप्यूटर पर चल रहा प्रोग्राम है। यह एक छोटे बैकग्राउंड टास्क (जैसे स्पेल-चेकर) से लेकर फुल-ब्लोन एप्लिकेशन (जैसे Notepad) तक कुछ भी हो सकता है।

Process क्लास अवलोकन

  • नेमस्पेस: System.Diagnostics
  • प्रत्येक प्रोसेस प्रोग्राम निष्पादित करने के लिए आवश्यक संसाधन प्रदान करता है
  • प्रत्येक प्रोसेस एक सिंगल थ्रेड (प्राइमरी थ्रेड) के साथ शुरू होता है
  • प्रोसेस में प्राइमरी थ्रेड के अलावा कई थ्रेड्स हो सकते हैं
  • प्रोसेस सिस्टम संसाधनों पर भारी निर्भर होते हैं (हैवीवेट), जबकि थ्रेड्स को न्यूनतम संसाधन चाहिए (लाइटवेट)

उदाहरण 1: Notepad चलाना आर्गुमेंट्स के साथ

using System;
using System.Diagnostics;

namespace DemoApplication
{
    class Program
    {
        static void Main()
        {
            Process notepad = new Process();
            notepad.StartInfo.FileName = "notepad.exe";
            notepad.StartInfo.Arguments = "DemoText.txt"; // फाइल नाम आर्गुमेंट के रूप में
            notepad.Start();
            
            Console.WriteLine("Notepad शुरू किया गया। एंटर दबाएं बाहर निकलने के लिए...");
            Console.ReadLine();
        }
    }
}

उदाहरण 2: ब्राउज़र में URL खोलना

using System;
using System.Diagnostics;

namespace DemoApplication
{
    class Program
    {
        static void Main()
        {
            // डिफ़ॉल्ट ब्राउज़र में URL खोलें
            Process.Start("https://www.google.com/");
            
            // या स्पेसिफिक ब्राउज़र में
            // Process.Start("chrome.exe", "https://www.google.com/");
            
            Console.WriteLine("ब्राउज़र खोला गया। एंटर दबाएं बाहर निकलने के लिए...");
            Console.ReadLine();
        }
    }
}

उदाहरण 3: एडवांस्ड Process कॉन्फिगरेशन

using System;
using System.Diagnostics;
using System.IO;

namespace DemoApplication
{
    class Program
    {
        static void Main()
        {
            var process = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "dotnet.exe",
                    Arguments = "run --project MyProject.csproj",
                    WorkingDirectory = @"C:\Projects\MyApp",
                    UseShellExecute = false,        // आउटपुट रीडायरेक्ट करने के लिए आवश्यक
                    RedirectStandardOutput = true,  // स्टैंडर्ड आउटपुट कैप्चर करें
                    RedirectStandardError = true,   // एरर आउटपुट कैप्चर करें
                    CreateNoWindow = true,          // कंसोल विंडो न दिखाएं
                    StandardOutputEncoding = System.Text.Encoding.UTF8,
                    StandardErrorEncoding = System.Text.Encoding.UTF8
                }
            };

            process.OutputDataReceived += (sender, e) =>
            {
                if (!string.IsNullOrEmpty(e.Data))
                    Console.WriteLine($"[OUTPUT] {e.Data}");
            };

            process.ErrorDataReceived += (sender, e) =>
            {
                if (!string.IsNullOrEmpty(e.Data))
                    Console.WriteLine($"[ERROR] {e.Data}");
            };

            process.Start();
            process.BeginOutputReadLine();
            process.BeginErrorReadLine();
            process.WaitForExit();

            Console.WriteLine($"प्रोसेस समाप्त हुआ। एक्जिट कोड: {process.ExitCode}");
        }
    }
}

उदाहरण 4: प्रोसेस पूरा होने का इंतजार करना और परिणाम प्राप्त करना

static string RunCommand(string fileName, string arguments, string workingDir = null)
{
    var process = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = fileName,
            Arguments = arguments,
            WorkingDirectory = workingDir ?? Directory.GetCurrentDirectory(),
            UseShellExecute = false,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            CreateNoWindow = true
        }
    };

    process.Start();
    string output = process.StandardOutput.ReadToEnd();
    string error = process.StandardError.ReadToEnd();
    process.WaitForExit();

    if (process.ExitCode != 0)
        throw new Exception($"कमांड विफल: {error}");

    return output;
}

// उपयोग
var result = RunCommand("git", "status", @"C:\MyProject");
Console.WriteLine(result);

ProcessStartInfo के महत्वपूर्ण गुण

गुणविवरण
FileNameचलाने के लिए एप्लिकेशन/दस्तावेज़ का नाम
Argumentsकमांड-लाइन आर्गुमेंट्स
WorkingDirectoryप्रोसेस के लिए कार्य निर्देशिका
UseShellExecuteशेल का उपयोग करके शुरू करें (डिफ़ॉल्ट true)। रीडायरेक्शन के लिए false होना चाहिए
RedirectStandardOutputआउटपुट स्ट्रीम रीडायरेक्ट करें
RedirectStandardErrorएरर स्ट्रीम रीडायरेक्ट करें
CreateNoWindowनई विंडो न बनाएं
Verb"runas" एडमिन के रूप में चलाने के लिए
UserName, Passwordअलग यूजर के रूप में चलाएं

आम उपयोग के मामले

  • कमांड-लाइन टूल्स चलाना (git, dotnet, npm, docker)
  • दस्तावेज़ खोलना (डिफ़ॉल्ट एप्लिकेशन के साथ)
  • ब्राउज़र में URL लॉन्च करना
  • बैकग्राउंड सर्विसेज/वर्कर्स शुरू करना
  • बिल्ड/डिप्लॉयमेंट स्क्रिप्ट्स चलाना
  • लिगेसी COM/Win32 एप्लिकेशन के साथ इंटरऑप

सुरक्षा नोट: अनट्रस्टेड इनपुट को आर्गुमेंट्स में पास करते समय सावधान रहें - कमांड इंजेक्शन से बचने के लिए हमेशा इनपुट को मान्य करें।

  1. किसी भी एप्लिकेशन को स्टार्टअप पर चलाने के लिए कस्टम Windows सेवा बनाएं किसी भी एप्लिकेशन को स्टार्टअप पर चलाने के लिए कस्टम Windows सेवा बनाएं

    यदि आप Windows OS में किसी एप्लिकेशन को सेवा के रूप में चलाना चाहते हैं, तो इस ट्यूटोरियल को पढ़ना जारी रखें। जैसा कि आप जानते हैं, Windows स्टार्टअप पर प्रोग्राम चलाने के सामान्य तरीके हैं: प्रोग्राम को Windows स्टार्टअप फ़ोल्डर में रखना, या Windows रजिस्ट्री का उपयोग करके प्रोग्राम को स्टार्टअप पर

  1. विंडोज 10 में एडमिनिस्ट्रेटर विशेषाधिकारों के साथ एप्लिकेशन चलाएं: चरण-दर-चरण गाइड विंडोज 10 में एडमिनिस्ट्रेटर विशेषाधिकारों के साथ एप्लिकेशन चलाएं: चरण-दर-चरण गाइड

    विंडोज 10 ऑपरेटिंग सिस्टम में User Account Control के लिए एक विशेष प्रतिबंध है जो कुछ सॉफ्टवेयर के लिए एडमिनिस्ट्रेटर विशेषाधिकार को प्रतिबंधित करता है। विशिष्ट एप्लिकेशन को प्रभावी ढंग से एक्सेस और चलाने के लिए एडमिनिस्ट्रेटर अनुमतियों की आवश्यकता होती है। ये बढ़े हुए विशेषाधिकार चल रहे एप्लिकेशन क

  1. मैक पर विंडोज चलाएं: वर्चुअल मशीन के साथ चरण-दर-चरण गाइड मैक पर विंडोज चलाएं: वर्चुअल मशीन के साथ चरण-दर-चरण गाइड

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