TOC

This article is currently in the process of being translated into Japanese (~81% done).

WPFアプリケーション:

Command-line parameters in WPF

コマンドラインパラメータはスタートしようとしているアプリケーションに一連のパラメータを与え、アプリケーションの動作を変えるテクニックです。最も一般的な例は、エディタのように指定したファイルをオープンさせます。これはWindowsに付属のメモ帳を実行して試すことが出来ます(スタートメニューからRunを選ぶか、[WindowsKey-R]を押します):

notepad.exe c:\Windows\win.ini

これによりwin.iniファイルを開いた状態でメモ帳が開きます(システムに合わせてパスを調整する必要があるかもしれません)。メモ帳は1つまたはいくつかのパラメータを使用するだけですが、あなたのアプリケーションでも同じことが出来ます。

コマンドラインパラメータはApp.xamlの項目でサブスクライブしたStartupイベントを通してWPFアプリケーションに伝えられます。この例で同じことを行います。すなわち、メソッドの引数を通じて渡された値を使います。まず、 App.xamlファイルは:

<Application x:Class="WpfTutorialSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
			 Startup="Application_Startup">
    <Application.Resources></Application.Resources>
</Application>

ここではStartupUriプロパティの代わりにStartupイベントをサブスクライブすることだけ行います。イベントはApp.xaml.csにインプリメントします:

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

		private void Application_Startup(object sender, StartupEventArgs e)
		{
			MainWindow wnd = new MainWindow();
			if(e.Args.Length == 1)
				MessageBox.Show("Now opening file: \n\n" + e.Args[0]);
			wnd.Show();
		}
	}
}

ここではStartupEventArgsを使います。これはアプリケーションのStartupイベントを伝えます。名前はeです。これはstringの配列であるArgsプロパティを持ちます。コマンドラインパラメータはクォーテーションで囲まれない場合はスペースで分解されます。

コマンドラインパラメータのテスト

コマンドラインパラメータが指定されていないので、上記の例を実行しても何も起きません。幸い、Visual Studioにはコマンドラインパラメータを設定してアプリケーションをテストする機能があります。Projectメニューの"[Project name] properties"を選んでDebugタブに行き、ここにコマンドラインパラメータを書きます。これは以下のようになります:

アプリケーションを走らせるとパラメータが表示されるでしょう。

もちろん、これはほとんど役に立ちません。代わりにパラメータをメインウィンドウのコンストラクタに渡すか、パブリックなオープンメソッドを呼び出します:

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

		private void Application_Startup(object sender, StartupEventArgs e)
		{
			MainWindow wnd = new MainWindow();
			// The OpenFile() method is just an example of what you could do with the
			// parameter. The method should be declared on your MainWindow class, where
			// you could use a range of methods to process the passed file path
			if(e.Args.Length == 1)
				wnd.OpenFile(e.Args[0]);
			wnd.Show();
		}
	}
}

コマンドラインの可能性

この例では一つだけの引数があって、それをファイル名の指定に使いました。実際に例では複数の引数があり、それらは例えば特定の機能をON/OFFするオプションとして使います。必要な情報を取得するには、渡された引数のリストをループで回して処理すべきですが、これはこの項目の範囲を超えています。


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!