Uruchamiasz aplikację (.EXE) z C #?


Odpowiedzi:


168

Użyj System.Diagnostics.Process.Start()metody.

Przeczytaj ten artykuł, jak go używać.

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

Oto fragment pomocnego kodu:

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

Z tymi obiektami możesz zrobić o wiele więcej, przeczytaj dokumentację: ProcessStartInfo , Process .


7
Chciałem tylko zaznaczyć, że wydaje się, że działa to również z innymi typami plików niż .exes. Po prostu wskaż plik, który chcesz otworzyć, a system Windows zrobi wszystko, co w jego mocy, aby go otworzyć: System.Diagnostics.Process.Start (@ "C: \ Users \ Blank \ Desktop \ PdfFile.pdf");
DLeh

WindowStyle = ProcessWindowStyle.Hidden jest dla nie-GUI. Za pierwszym razem, gdy to uruchomiłem, nie udało się bez UseShellExecute = false, ale teraz działa. Nie jestem pewien, co się tam dzieje ...
Barton,

A jeśli nie znam pełnej nazwy pliku exe, chcę zadzwonić do „PathTo * .exe”. Czy to możliwe? Czy mogę użyć „*” dla reszty nazwy?
vishal

@vishal, ten proces służy do wywołania określonego pliku wykonywalnego. Z pewnością możesz spróbować użyć, PathTo*.exeale nie spodziewałbym się, że zadziała. (a) co zrobić, jeśli jest wiele dopasowań? (b) Mam nadzieję, że kod Microsoftu na to nie pozwoli, ponieważ byłoby to słabe zabezpieczenie.
sfuqua

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

A jeśli nie znam pełnej nazwy pliku exe, chcę zadzwonić do „PathTo * .exe”. Czy to możliwe?
vishal

@vishal musisz zakodować procedurę wyszukiwania, aby znaleźć plik wykonywalny
KADEM Mohammed

19
System.Diagnostics.Process.Start( @"C:\Windows\System32\Notepad.exe" );

14

Jeśli masz problemy z używaniem System.Diagnostics tak jak ja, użyj następującego prostego kodu, który będzie działał bez niego:

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

10
Jak to jest „bez System.Diagonostics”? Processjest w System.Diagnostics.
Paul Sinclair


2

Po prostu umieść plik file.exe w folderze \ bin \ Debug i użyj:

Process.Start("File.exe");

3
Jak twoja odpowiedź poprawia się w stosunku do wszystkich poprzednich?
mustaccio

Większość ludzi przychodzących, aby zobaczyć ten post, była zdezorientowana ścieżką do pliku, który zwykle umieszczają w folderze debugowania, więc kiedy używają mojej podpowiedzi "File.exe", bezpośrednio rozumieją, że w tym przypadku ścieżka nie jest potrzebna.
Amin Mohamed,

0

Użyj Process.Start, aby rozpocząć proces.

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

0

Spróbuj tego:

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

(Upewnij się, że korzystasz z biblioteki System.Diagnostics)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.