[C# 문법] C#에서 외부 프로그램 실행 시키기 (ProcessStartInfo 클래스)
- C#/C# 문법
- 2021. 5. 9. 16:59
참조
소개
안녕하세요. 오늘은 C#에서 외부 프로그램을 실행시키는 방법에 대해서 알려 드리려고 합니다.
C#에서 외부 프로그램으 실행 시키려면, ProcessStartInfo 클래스를 이용하여 간단하게 외부 프로그램에 접근하여 실행 시킬 수 있습니다.
먼저, ProcessStartInfo 클래스에 대해서 간단히 알아 보도록 하겠습니다.
ProcessStartInfo 클래스
- ProcessStartInfo 클래스는 프로세스를 시작할 때 사용되는 값 집합을 지정하는 클래스 입니다.
ProcessStartInfo 클래스 속성
- FileName
- 시작할 어플리케이션 또는 문서를 가져오거나 실행합니다.
- Arguments
- 어플리케이션을 시작할 때 사용할 명령줄 인수 집합을 가져오거나 설정합니다.
- WorkingDirectory
- UseShellExecute 속성이 false 인 경우 시작할 프로세스의 작업 디렉토리를 가져오거나 설정합니다.
- UseShellExecute 속성이 true 인 경우 시작할 프로세스가 포함된 디렉토리를 가져오거나 설정합니다.
- CreateNoWindow
- 프로세스를 새 창에서 시작할지 여부를 나타내는 값을 가져오거나 설정합니다.
- UseShellExecute
- 프로세스를 시작할 때 운영체제 셀을 사용할지 여부를 나타내는 값을 가져오거나 설정합니다.
- RedirectStandardError
- 어플리케이션의 오류 출력을 StandardError 스트림에 쓸지 여부를 나타내는 값을 가져오거나 설정합니다.
- RedirectStandardInput
- 어플리케이션의 입력을 StandartInput 스트림에 쓸지 여부를 나타내는 값을 가져오거나 설정합니다.
- RedirectStandardOutput
- 어플리케이션의 텍스트 출력을 StandardOutPut 스트림에 쓸지 여부를 나타내는 값을 가져오거나 설정합니다.
그럼 바로 예제 코드를 통해서 어떻게 ProcessStartInfo 클래스를 이용하여 외부 프로그램을 실행 시키는지 보여 드리도록 하겠습니다.
예제 코드 시나리오
- WPF 프로젝트 하나를 생성합니다.
- 버튼을 클릭하여, 실행시킬 외부 프로그램의 경로를 가져 옵니다.
- 해당 외부 프로그램이 제대로 실행 되는지 확인합니다.
예제코드
MainWindow.xaml
<Window x:Class="ProcessStartInfoTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ProcessStartInfoTest"
mc:Ignorable="d"
Title="MainWindow" Height="123" Width="500">
<Grid>
<TextBox x:Name="uiTb_Path"
HorizontalAlignment="Left"
Height="23"
Margin="44,33,0,0"
TextWrapping="Wrap"
Text="TextBox"
VerticalAlignment="Top"
Width="245"/>
<Button x:Name="uiBtn_Path"
Content="경로"
HorizontalAlignment="Left"
Margin="304,36,0,0"
VerticalAlignment="Top"
Width="75"
Click="uiBtn_Path_Click"/>
<Button x:Name="uiBtn_ProcessStart"
Content="프로그램 시작"
HorizontalAlignment="Left"
Margin="384,36,0,0"
VerticalAlignment="Top"
Width="90"
Click="uiBtn_ProcessStart_Click"/>
</Grid>
</Window>
MainWindow.xaml.cs
using Microsoft.Win32;
using System.Diagnostics;
using System.Windows;
namespace ProcessStartInfoTest
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void uiBtn_Path_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == true)
{
// 파일 경로 가져와 TextBox에 표시
uiTb_Path.Text = openFileDialog.FileName;
}
}
private void uiBtn_ProcessStart_Click(object sender, RoutedEventArgs e)
{
// 그림판에서 열고자 하는 이미지 경로 표시
string imagePath = @"C:\Users\Desktop\이미지.png";
ProcessStartInfo processInfo = new ProcessStartInfo
{
FileName = uiTb_Path.Text,
Arguments = imagePath
};
Process.Start(processInfo);
}
}
}
실행 결과
- 저는 그림판을 실행시켜서, Argument에 그림판에 보여질 이미지 경로를 저장하여 그림판이 실행됨과 동시에 해당 이미지가 열리게 프로그램을 작성하였습니다.
- 다음과 같이 열고자 하는 프로그램을 선택하고, 프로그램 실행 버튼을 클릭하니까 그림판이 실행되면서 이미지까지 한번에 보이는 것을 확인할 수 있습니다.
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] C# 특정 구문들 수행 시간 구하는 방법 (0) | 2021.05.28 |
---|---|
[C# 문법] 로컬 IP 주소 가져오는 방법 (0) | 2021.05.23 |
[C# 문법] 박싱과 언박싱이란? (2) | 2021.05.09 |
C# Tuple 이용하여 메서드 여러개 변수 반환하기 (0) | 2021.05.05 |
[C# 문법] C# 클래스 객체 깊은복사(DeepClone) 하는 방법 (0) | 2021.04.18 |
이 글을 공유하기