/ / Uruchamianie aplikacji konsoli z wiersza polecenia bez uruchamiania nowego okna konsoli - c #, .net, windows, windows-console

Uruchamianie aplikacji konsolowej z poziomu wiersza poleceń bez uruchamiania nowego okna konsoli - c #, .net, windows, windows-console

Czy istnieje sposób, aby zapobiec aplikacji konsoliod uruchomienia nowego okna konsoli, jeśli jest ono wykonywane z wiersza polecenia? Nie wiem, dlaczego nigdy wcześniej tego nie zauważyłem (lub jeśli po prostu wcześniej mnie to nie denerwowało), ale chciałbym móc otworzyć wiersz polecenia, przejść do miejsca, w którym moja aplikacja konsoli (.exe) jest i uruchom go bez uruchamiania nowego okna konsoli.

Widziałem wątki o tym, jak ukryć okno konsoli, ale moja aplikacja tak naprawdę nie ma działać w sposób zautomatyzowany, więc jeśli uruchomią ją z Eksploratora, chciałbym, żeby to zobaczyły.

Odpowiedzi:

10 dla odpowiedzi № 1

Aplikacja konsoli po uruchomieniu z istniejącego wiersza polecenia nie utworzy nowego okna konsoli: system Windows ponownie użyje istniejącego okna.

Pliki wykonywalne PE (tj. .exe pliki) są oznaczone flagą informującą system operacyjnyjeśli jest to aplikacja konsolowa, czy nie: jeśli zostanie oznaczona jako aplikacja konsolowa, system Windows ponownie użyje okna konsoli używanego do jej uruchomienia lub utworzy nowe okno, jeśli zostało uruchomione z procesu GUI (takiego jak Eksplorator Windows) W aplikacjach .NET ta flaga jest kontrolowana przez listę rozwijaną Rodzaj aplikacji we właściwościach projektu (gdzie wyświetla się „Aplikacja Windows”, „Aplikacja konsoli” lub „Biblioteka klas”).

Jeśli Twój program tworzy nowe okno, prawdopodobnie ustawiono niewłaściwą flagę LUB kod programu jest wywoływany ręcznie AllocConsole który utworzy nowe okno konsoli niezależnie od tego, jak proces został utworzony lub flagi konsoli PE.

Aktualizacja Jest jeszcze jeden powód: gdy aplikacja konsoli działa na innym poziomie uprawnień niż jej (nie podwyższone) okno konsoli nadrzędnej, UAC wymaga, aby znajdowała się we własnym oknie.