Как запустить программу в Windows Forms
Метод 1: Использование класса Process
Шаги:
1. Создайте экземпляр класса Process
.
2. Установите свойство StartInfo.FileName
в путь к исполняемому файлу.
3. Запустите процесс, вызвав метод Start()
.
using System.Diagnostics;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
// Создаем экземпляр класса Process.
using (Process process = new Process())
{
// Устанавливаем путь к исполняемому файлу.
process.StartInfo.FileName = "notepad.exe";
// Запускаем процесс.
process.Start();
}
}
}
}
Метод 2: Использование класса System.Runtime.InteropServices.Marshal
Шаги:
1. Создайте экземпляр класса System.Runtime.InteropServices.Marshal
.
2. Установите свойство SystemDirectory
в путь к системному каталогу Windows.
3. Определите имя исполняемого файла.
4. Создайте строку запуска, объединив имя исполняемого файла и путь к системному каталогу.
5. Запустите программу, вызвав метод WinExec()
.
using System;
using System.Runtime.InteropServices;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
// Создаем экземпляр класса Marshal.
Marshal.SetSystemDirectory(Environment.SystemDirectory);
// Определяем имя исполняемого файла.
string fileName = "notepad.exe";
// Создаем строку запуска.
string commandLine = SystemDirectory + "\" + fileName;
// Запускаем программу.
int result = Marshal.WinExec(commandLine, 0);
}
}
}
Метод 3: Использование метода ShellExecute
Шаги:
1. Определите имя исполняемого файла.
2. Определите аргументы командной строки (необязательно).
3. Вызовите метод ShellExecute()
.
using System.Diagnostics;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
// Определяем имя исполняемого файла.
string fileName = "notepad.exe";
// Определяем аргументы командной строки (необязательно).
string arguments = "-a";
// Вызываем метод ShellExecute.
Process.Start(fileName, arguments);
}
}
}
Сравнение методов
| Метод | Преимущества | Недостатки |
|—|—|—|
| Класс Process | Простой в использовании | Требует обращения с ресурсами вручную |
| Класс Marshal | Быстрый и эффективный | Требует знаний Win32 API |
| Метод ShellExecute | Удобный и простой | Может быть медленным на некоторых системах |