Jak wiadomo czasami czasami projektuje się aplikację, by odpowiednio reagował na argumenty linii komend (tzw. command line arguments). Służą one różnym celom – od pokazywania dodatkowy informacji, po udostępnienie dodatkowej funkcjonalności użytkownikom zaawansowanym.
Przykład wywołania programu z takimi argumentami:
iexplorer http://www.google.pl
Jak umożliwić wykorzystanie takich możliwości w C#? Jeżeli utworzymy projekt C# który będzie korzystał z konsoli, to praktycznie nic dodatkowego nie musimy robić – potrzebna zmienna jest dostępna już na starcie:
-
class MyApp
-
{
-
static void Main(string[] args) // tutaj
-
{
-
}
-
}
Lista args zostanie wypełniona odpowiednimi danymi automatycznie przy starcie programu.
Co innego jeżeli chcemy to samo zrobić, gdy mamy projekt oparty na Windows Forms. Bez modyfikacji kodu generowanego przez Visual Studio, nie mamy bezpośrednio dostępu do zmiennej args w metodzie Main. Jest jednak na to inny sposób:
-
// gdzieś w kodzie
-
string[] args = Environment.GetCommandLineArgs();
I problem rozwiązany. Możemy wykorzystywać uzyskane dane jak chcemy.
Inna ważna uwaga jest co do samych danych, co otrzymujemy. Spójrzmy na przykład:
C:\MyProg.exe 124 "This prog is Gut"
Ile jest argumentów? Laik powiedziałby, że pięć, obeznany stwierdzi, że dwa, a poprawna odpowiedź to trzy. Dlaczego? Ponieważ każda lista argumentów zaczyna się od łańcucha znaków zawierającą ścieżkę do uruchomionego programu. Dodatkowo, każdy ciąg znaków objęty w cudzysłów traktowany jest jako osobny argument. Dlatego lista “args” będzie zawierała:
args[0] = C:\MyProg.exe args[1] = 124 args[2] = This prog is Gut