C # से एप्लिकेशन (.EXE) लॉन्च करना?


164

मैं C # का उपयोग करके किसी एप्लिकेशन को कैसे लॉन्च कर सकता हूं?

आवश्यकताएँ: विंडोज एक्सपी और विंडोज विस्टा पर काम करना चाहिए ।

मैंने DinnerNow.net नमूना से एक नमूना देखा है जो केवल Windows Vista में काम करता है।

जवाबों:


168

प्रयोग System.Diagnostics.Process.Start()विधि।

इसका उपयोग कैसे करें, इस लेख को देखें

Process.Start("notepad", "readme.txt");

string winpath = Environment.GetEnvironmentVariable("windir");
string path = System.IO.Path.GetDirectoryName(
              System.Windows.Forms.Application.ExecutablePath);

Process.Start(winpath + @"\Microsoft.NET\Framework\v1.0.3705\Installutil.exe",
path + "\\MyService.exe");

230

यहाँ सहायक कोड का एक टुकड़ा है:

using System.Diagnostics;

// Prepare the process to run
ProcessStartInfo start = new ProcessStartInfo();
// Enter in the command line arguments, everything you would enter after the executable name itself
start.Arguments = arguments; 
// Enter the executable to run, including the complete path
start.FileName = ExeName;
// Do you want to show a console window?
start.WindowStyle = ProcessWindowStyle.Hidden;
start.CreateNoWindow = true;
int exitCode;


// Run the external process & wait for it to finish
using (Process proc = Process.Start(start))
{
     proc.WaitForExit();

     // Retrieve the app's exit code
     exitCode = proc.ExitCode;
}

इन वस्तुओं के साथ आप बहुत कुछ कर सकते हैं, आपको प्रलेखन पढ़ना चाहिए: ProcessStartInfo , Process


7
बस यह इंगित करना चाहता था कि यह भी .exes की तुलना में अन्य filetypes के साथ काम करता है। बस उस फ़ाइल को इंगित करें जिसे आप खोलना चाहते हैं और विंडोज़ उसे खोलने की पूरी कोशिश करेगी: System.Diagnostics.Process.Start (@ "C: \ Users \ Blank \ Desktop \ PdfFile.pdf");
DLeh

WindowStyle = ProcessWindowStyle.Hidden गैर-जीयूआई के लिए है। पहली बार जब मैंने इसे चलाया तो यह UseShellExecute = false के बिना विफल हो गया, लेकिन अब यह काम करता है। यकीन नहीं होता कि वहां क्या चल रहा है ...
बार्टन

क्या होगा यदि मुझे exe का पूरा नाम नहीं पता है, तो मैं "PathTo * .exe" कॉल करना चाहता हूं क्या यह संभव है? क्या मैं बाकी के नाम के लिए "*" का उपयोग कर सकता हूं?
विशाल

@vishal, यह प्रक्रिया विशिष्ट निष्पादन योग्य कॉल करने के लिए है। आप निश्चित रूप से उपयोग करने की कोशिश कर सकते हैं, PathTo*.exeलेकिन मुझे इसके काम करने की उम्मीद नहीं होगी। (क) यदि कई मैच हों तो क्या होगा? (b) मुझे आशा है कि Microsoft का कोड इसे अनुमति नहीं देगा, क्योंकि यह कमजोर सुरक्षा होगी।
सूफूका

58
System.Diagnostics.Process.Start("PathToExe.exe");

क्या होगा अगर मुझे exe का पूरा नाम नहीं पता है, तो मैं "PathTo * .exe" कॉल करना चाहता हूं क्या यह संभव है?
विशाल

@vishal आपको निष्पादन योग्य खोजने के लिए खोज की एक प्रक्रिया को कोड करने की आवश्यकता है
KADEM मोहम्मद


14

यदि आपके पास System.Diagnostics का उपयोग करने में समस्याएं हैं, तो मेरे पास निम्न सरल कोड का उपयोग करें जो इसके बिना काम करेगा:

Process notePad = new Process();
notePad.StartInfo.FileName   = "notepad.exe";
notePad.StartInfo.Arguments = "mytextfile.txt";
notePad.Start();

10
यह "System.Diagonostics के बिना" कैसे है? ProcessSystem.Diagnostics में है।
पॉल सिनक्लेयर

8

इसके अतिरिक्त, यदि संभव हो तो आप अपने रास्तों के लिए पर्यावरण चर का उपयोग करना चाहेंगे: http://en.wikipedia.org/wiki/Environment_variable#Default_Values_on_Microsoft_Windows

ईजी

  • % WINDIR% = Windows निर्देशिका
  • % APPDATA% = अनुप्रयोग डेटा - विस्टा और XP के बीच भिन्न होता है।

लंबी सूची के लिए लिंक की कई और जाँचें हैं।


2

बस अपने file.exe को \ bin \ Debug फ़ोल्डर में रखें और उपयोग करें:

Process.Start("File.exe");

3
पिछले सभी पर आपके उत्तर में सुधार कैसे होता है?
मस्टीको

इस पोस्ट को देखने के लिए आने वाले अधिकांश लोग एक फ़ाइल के पथ के बारे में भ्रमित हो गए, जो आमतौर पर वे डिबग फ़ोल्डर में डालते हैं, इसलिए जब वे मेरे संकेत "File.exe" का उपयोग करते हैं तो सीधे समझते हैं कि इस मामले में पथ की कोई आवश्यकता नहीं है।
अमीन मोहम्मद

0

एक प्रक्रिया शुरू करने के लिए Process.Start का उपयोग करें ।

using System.Diagnostics;
class Program
{
    static void Main()
    {
    //
    // your code
    //
    Process.Start("C:\\process.exe");
    }
} 

0

इसे इस्तेमाल करे:

Process.Start("Location Of File.exe");

(सुनिश्चित करें कि आप System.Diagnostics लाइब्रेरी का उपयोग करते हैं)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.