[C# 문법] C#에서 외부 프로그램 실행 시키기 (ProcessStartInfo 클래스)

참조

소개

안녕하세요. 오늘은 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에 그림판에 보여질 이미지 경로를 저장하여 그림판이 실행됨과 동시에 해당 이미지가 열리게 프로그램을 작성하였습니다.
  • 다음과 같이 열고자 하는 프로그램을 선택하고, 프로그램 실행 버튼을 클릭하니까 그림판이 실행되면서 이미지까지 한번에 보이는 것을 확인할 수 있습니다.

1

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY