Uruchamianie konsoli w aplikacji WPF/WinForms
Dodany: 20:31, czwartek, 17 lutego 2011
Tryb konsoli w nowoczesnych aplikacjach systemowy może się przydać. Z tego właśnie powodu w tym artykule przedstawiłem prosty sposób uruchomienia konsoli z poziomu aplikacji Windows Presentation Foundation lub Windows Forms. Do tego celu zostały wykorzystane biblioteki znajdujące się w środowisku Windows.
Pracując nad pewnym projektem w WPF niezbędne okazało się wykorzystanie konsoli do wyświetlenia pewnego rodzaju danych. Po dłuższym przeszukiwaniu internetu udało mi się znaleść informacje, jak to zrobić, jednak nie były one dość precyzyjne. Z tego właśnie powodu postanowiłem opisać całą procedurę uruchamiania konsoli w aplikacjach WPF/WinForms.
Do tego celu niezbędne będzie stworzenie nowego projektu WPF w Visual Studio, dodanie trzech przycisków typu Button oraz kontrolki typu TextBox. Pierwszy z przycisków będzie odpowiedzialny za otwieranie okna konsoli, drugi za jego zamykanie, a zadaniem trzeciego będzie przesyłanie tekstu znajdującego się w TextBox'ie do okna konsoli. Poniższy zrzut ekranu prezentuje wygląd przykładowego interfejsu użytkownika.
Kolejnym krokiem będzie dodanie statycznej klasy, w której zaimportowane zostały biblioteki odpowiedzialne za obsługę konsoli. W niej także znajdują się statyczne metody odpowiedzialne za otwieranie i zamykanie konsoli oraz wypisywanie na niej tekstu. Klasa ta została zaprezentowana na poniższym listingu.
{
{
{
public static void CloseConsole()
{
public static void WriteOnConsole(string text)
{
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool AllocConsole();
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool AttachConsole(int pid);
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool FreeConsole();
Użyte tutaj zostały biblioteki znajdujące się w systemie Windows, dzięki którym użytkownik ma możliwość otworzenia i zamknięcia konsoli.
Ostatnim krokiem będzie dodanie obsługi zdarzeń odpowiedzialnych za naciśnięcie poszczególnych przycisków wchodzących w skład interfejsu użytkownika. Zostało to opisany na poniższym listingu.
{
btnOpen.IsEnabled = false;
btnClose.IsEnabled = true;
private void btnClose_Click(object sender, RoutedEventArgs e)
{
btnOpen.IsEnabled = true;
btnClose.IsEnabled = false;
private void btnWriteOnConsole_Click(object sender, RoutedEventArgs e)
{
{
txtToConsole.Text = string.Empty;
W tym momencie po naciśnięciu przycisku OTWÓRZ zostanie wyświetlona konsola. Po wpisaniu tekstu i naciśnięciu przycisku WYŚWIETL tekst zostanie przeniesiony na konsole. Zamykanie konsoli odbywa się poprzez naciśnięcie przycisku ZAMKNIJ. Zostało to zaprezentowane na poniższym zrzucie ekranu.
W razie jakichkolwiek pytań, zapraszam do działu kontakt.



