Konsolenfenster in C # -Konsolenanwendung ausblenden


105

Die Sache ist, ich möchte wirklich nicht, dass das Konsolenfenster angezeigt wird ... aber die Lösung sollte ausgeführt werden. Mein Punkt hier ist, ich möchte die Anwendung im Hintergrund laufen lassen, ohne dass ein Fenster auftaucht.


2
Können Sie uns etwas mehr Informationen darüber geben, was die Anwendung tun soll? Es klingt wie es sollte ein Dienst oder eine Windows-Anwendung sein? Mit ein wenig Wissen über den Zweck könnten wir viel mehr helfen und den besten Weg vorschlagen , dies zu lösen.
Dave

Seine Keylogger-Anwendung. Ich habe Windows-Dienst verwendet, aber es kann keine Schlüsselzustände im Windows-Dienst erhalten
SOF-Benutzer

Antworten:


187

Ändern Sie den Ausgabetyp von Konsolenanwendung in Windows-Anwendung . Dies kann unter Projekt -> Eigenschaften -> Anwendung in Visual Studio erfolgen:

Alt-Text


4
Das Konsolenfenster blinkt und geht zurück. Wie halte ich die Anwendung ohne Fenster am Laufen?
SOF-Benutzer

@ SOF-Benutzer: Wie starten Sie die Anwendung? Durch Doppelklick im Explorer oder über das Startmenü?
Dirk Vollmar

Ich habe auch Console.ReadLine () gesetzt;
SOF-Benutzer

16
Entfernen Sie die Console.ReadLine. Es macht keinen Sinn, wenn Sie kein Konsolenfenster haben.
Dirk Vollmar

1
@ KarolŻurowski: Die Idee hier ist, dass Sie dies für Apps verwenden würden, die entweder auch über eine Benutzeroberfläche verfügen (z. B. ein Symbol in der Taskleiste) oder für Apps, die eine bestimmte Aufgabe ausführen und dann automatisch beendet werden, wenn Sie fertig sind. Wenn Sie keine haben, wird die App im Hintergrund ausgeführt, bis sie sich abmeldet / herunterfährt oder explizit beendet wird, z. B. mithilfe des Task-Managers.
Dirk Vollmar

25

Ändern Sie Ihren Anwendungstyp in eine Windows-Anwendung. Ihr Code wird weiterhin ausgeführt, hat jedoch weder ein Konsolenfenster noch ein Standardfensterfenster, es sei denn, Sie erstellen eines.


2
Das Konsolenfenster blinkt und geht zurück. Wie halte ich die Anwendung ohne Fenster am Laufen?
SOF-Benutzer

Sie stellen sicher, dass es nicht beendet wird. Ohne weitere Informationen gibt es wirklich nicht viel zu sagen. Was macht das Programm? Läuft es etwas in einer Schleife?
Lasse V. Karlsen

1
Das Ändern der Anwendung "Ausgabetyp" in "Windows-Anwendung" hat bei mir funktioniert.
Hellowahab

12

Stattdessen Console.Readline/keykönnen Sie new ManualResetEvent(false).WaitOne()endlich verwenden. Das funktioniert gut für mich.


3

Vielleicht möchten Sie versuchen , eine Windows-Dienstanwendung zu erstellen . Es wird im Hintergrund ohne Benutzeroberfläche ausgeführt.


3
Windows-Dienst kann keine Tastendruckereignisse erhalten
SOF-Benutzer

1
Die Dienste sind abhängig von Ihrer Anwendung stark eingeschränkt. Ab Windows Vista werden sie in Sitzung 0 gezwungen und können daher in anderen Sitzungen, z. B. Popup-Meldungen anzeigen, nichts ausführen.
Matt

1
@Matt "kann in anderen Sitzungen nichts ausführen" ist nicht ganz richtig. Hier ist ein Codeprojekt für einen Dienst, der eine Administrator-Eingabeaufforderung auf dem Desktop des angemeldeten Benutzers öffnet. codeproject.com/Articles/35773/…
Qodex

0

Ändern Sie den Ausgabetyp von Konsolenanwendung in Windows-Anwendung .

Und stattdessen Console.Readline/keykönnen Sie new ManualResetEvent(false).WaitOne()am Ende verwenden, um die App am Laufen zu halten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.