【C#】【book】「実戦で役立つ C# プログラミングのイディオム/定石&パターン」の学習記録(14)

下記の「実戦で役立つ C#プログラミングのイディオム/定石&パターン」を使った学習記録のページです。
本ページのプログラムは「実戦で役立つ C#プログラミングのイディオム/定石&パターン」をもとにして作成したものも多数あります。
実戦で役立つ C#プログラミングのイディオム/定石&パターン

14.1 プロセスの起動

14.1.1 プログラムの起動

プロジェクト作成

f:id:dnkrnka:20181105232025p:plain:w800
 

使用例

下記のボタンを押下するとメモ帳が起動する。
f:id:dnkrnka:20181105235812p:plain
 

MainWindow.xaml

MainWindow.xaml 上に配置したボタンをダブルクリックすると Button タグに Click="Button_Click" が追加される。

<Window x:Class="ProcessSample.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:ProcessSample"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
  <!--<Button x:Name="メモ帳を起動する" />-->
  <Grid>
    <Button Content="Notepad を開く" Margin="57,39,503,330" Click="Button_Click"/>
  </Grid>
</Window>

 

MainWIndows.xaml.cs
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace ProcessSample
{
  /// <summary>
  /// MainWindow.xaml の相互作用ロジック
  /// </summary>
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();
    }

    private void Button_Click( object sender, RoutedEventArgs e )
    {
      RunNotepad();
    }

    // 14.1 プログラムの起動
    private static void RunNotepad()
    {
      var path = @"%SystemRoot%\system32\notepad.exe";
      // Environment.ExpandEnvironmentVariables により環境変数が展開される (ここでは %SystemRoot% が該当する)
      var fullpath = Environment.ExpandEnvironmentVariables( path );
      Process.Start( fullpath );
    }
  }
}