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.