Poszukałem informacji, jak ukryć własne okno konsoli. O dziwo, jedynymi rozwiązaniami, jakie mogłem znaleźć, były zhackowane rozwiązania polegające FindWindow()
na znalezieniu okna konsoli według jego tytułu . Wkopałem się trochę głębiej w interfejs API systemu Windows i stwierdziłem, że istnieje o wiele lepszy i łatwiejszy sposób, więc chciałem opublikować go tutaj, aby inni mogli go znaleźć.
Jak ukryć (i pokazać) okno konsoli związane z moją własną aplikacją konsoli C #?
c#
console
console-application
Timwi
źródło
źródło
Oto jak:
źródło
csproj
ręczną edycję pliku. Visual Studio nie ma graficznego interfejsu użytkownika, aby to zrobić, ale honoruje to ustawienie, jeślicsproj
poprawnie edytujesz plik.using System.Runtime.InteropServices;
const int SW_SHOWMINIMIZED = 2;
a następnie wShowWindow(handle, SW_SHOWMINIMIZED);
ten sposób konsola nie zaczyna się ukryta, tylko zminimalizowana.Dlaczego potrzebujesz aplikacji konsolowej, jeśli chcesz ukryć samą konsolę? =)
Zalecam ustawienie typu Wyjście projektu na Aplikacja systemu Windows zamiast aplikacji konsoli. Nie wyświetli się okno konsoli, ale wykonaj wszystkie czynności, podobnie jak aplikacja Console.
źródło
TopShelf
pozwala również na prowadzenieConsoles
jako usługa, a to łamie toMożesz zrobić to odwrotnie i ustawić typ danych wyjściowych aplikacji na: Aplikacja Windows. Następnie dodaj ten kod na początku aplikacji.
Ten kod pokaże Konsolę, jeśli
showConsole
jesttrue
źródło
Zobacz mój post tutaj:
Pokaż konsolę w aplikacji Windows
Możesz utworzyć aplikację Windows (z oknem lub bez) i wyświetlać konsolę zgodnie z potrzebami. Korzystając z tej metody, okno konsoli nigdy się nie pojawia, chyba że zostanie to wyraźnie pokazane. Używam go do aplikacji w trybie podwójnym, które chcę uruchamiać w trybie konsoli lub GUI, w zależności od sposobu ich otwarcia.
źródło
„Po prostu ukryć” możesz:
Zmień typ wyjścia z aplikacji konsoli do aplikacji Windows ,
Zamiast tego
Console.Readline/key
możesz użyćnew ManualResetEvent(false).WaitOne()
na końcu, aby utrzymać działanie aplikacji.źródło
Jeśli nie chcesz zależeć od tytułu okna, użyj tego:
...
źródło
Jeśli nie masz problemu z integracją małej aplikacji wsadowej, istnieje program o nazwie Cmdow.exe , który pozwala ukryć okna konsoli na podstawie tytułu konsoli.
Dodaj exe do rozwiązania, ustaw akcję kompilacji na „Treść”, ustaw opcję Kopiuj do katalogu wyjściowego na odpowiadającą Ci, a cmdow ukryje okno konsoli po uruchomieniu.
Aby ponownie wyświetlić konsolę, wystarczy zmienić Argumenty
źródło