TOC

This article has been localized into Polish by the community.

Aplikacja WPF:

Parametry cmd w WPF

Parametry przekazywane przy wywołaniu aplikacji z konsoli wiersza poleceń mają w pewien sposób wpłynąć na stan startowy aplikacji. Najpopularniejszy przykładem jest uruchomienie aplikacji ze wskazanym plikiem, np.: edytor tekstowy. Możesz sam spróbować uruchomić Notatnik poniższą komendą (Uruchom z menu Start lub skrótem klawiszowym Windows + R):

notepad.exe c:\Windows\win.ini

Ten przykład uruchomi Notatnik z plikiem win.ini (może być potrzeba dopasowania ścieżki do systemu). Notatnik przegląda swoje parametry i szuka wskazanych. Twoja aplikacja może zrobić to samo!

Parametry wiersza poleceń są przekazywane do aplikacji WPF przez event Startup, który jest subskrybowany w App.xaml. W przykładzie zrobimy to samo, a potem użyjemy przekazanych wartości jako argumenty metod. Na początek 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>

Wszystko co tutaj robimy to subskrybujemy event Startup, zastępując atrybut StartupUri. Event jest zaimplementowany w 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 jest tym czego potrzebujemy. Jest przekazywane do eventu Application Startup o nazwie e. Parametr posiada atrybut Args, który jest tablicą tekstów. Parametry wiersza poleceń oddzielone są spacjami, chyba że spacje są w cudzysłowie.

Testowanie parametrów wiersza poleceń

Jeżeli uruchomisz powyższy przykład nic się nie stanie, ponieważ nie został przekazany żaden parametr do wiersza poleceń. Na szczęście Visual Studio ułatwia nam testowanie takiej sytuacji w Twojej aplikacji. Z menu Projekt wybierz Opcje [Nazwa projektu] i Debug, gdzie możesz zdefiniować parametry wiersza poleceń. Powinno to wyglądać tak:

Spróbuj uruchomić aplikację i zobaczysz, że odpowiedziała na Twój parametr.

Oczywiście wiadomość nie jest bardzo przydatna. Jednakże możesz przekazać ją do konstruktora głównego okna lub wywołać publiczną metodą otwarcia jak poniżej:

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();
		}
	}
}

Możliwości wiersza poleceń

W tym przykładzie sprawdziliśmy czy jest dokładnie jeden argument i jeżeli tak to użyliśmy go jako nazwy pliku. W prawdziwym świecie możesz mieć wiele argumentów, a nawet używać ich do ustawień, np.: przełączania dodatków lub trybów. Osiągnąłbyś to przez zapętlenie całej listy argumentów przekazanej podczas kolekcjonowanie informacji, lecz wykracza to poza ten artykuł.


Table of Contents