Moinsen,
ansich mag ich die Konsole ja sehr, weil sie bequem zu benutzen ist und insgesamt einfach recht gut funktioniert. Aber manchmal stört sie auch einfach, insbesondere wenn sie sich nach Programmende nicht automatisch schließt. (Es geht mir hier nicht nur um die Einstellung im VS Debugger, sondern auch um das Verhalten, wenn man das Programm ohne VS aus dem Explorer heraus startet).
Man kann wohl in den Kompilereinstellungen angeben, dass man gar keine Konsole haben will. Aber eigentlich hätte ich gerne so ein Feature wie in Blender. Dort gibt es Standardmäßig keine Konsole, es gibt aber sehr wohl einen Menüeintrag, in dem man das Fenster jederzeit öffnen oder schließen kann. Wie setze ich so ein Verhalten am elegantesten um?
Visual Studio - Kontrolle über die Konsole
Visual Studio - Kontrolle über die Konsole
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
Re: Visual Studio - Kontrolle über die Konsole
Dafür kann man die Konsolen Funktionen der WinAPI nutzen. Siehe https://learn.microsoft.com/de-de/windo ... -functions. Einfaches anzeigen und verstecken geht mit und
Code: Alles auswählen
::ShowWindow(::GetConsoleWindow(), SW_SHOW);
Code: Alles auswählen
::ShowWindow(::GetConsoleWindow(), SW_HIDE);
Re: Visual Studio - Kontrolle über die Konsole
Hi, vielen Dank.
Hab das ausprobiert, hat nicht funktioniert, hab ne halbe Stunde versucht den Fehler zu finden und dann aufgegeben. Habs dann später auf einem zweiten Rechner getestet und da hat es sofort funktioniert. Die laufen beide mit Win10 und es waren beide mit VS2022 kompiliert. Komisch.
Es hat sich dann aber letztendlich herausgestellt, dass dies an ConEmu lag, ein Tool was ich eigentlich ganz gerne verwendet habe, weil es die Standard-Windows Konsole sehr viel benutzbarer macht. Naja, mal schauen was mir langfristig wichtiger ist oder ob ich die Konsole nicht auch dann verstecken kann, wenn ich ConEmu verwende...
Hab das ausprobiert, hat nicht funktioniert, hab ne halbe Stunde versucht den Fehler zu finden und dann aufgegeben. Habs dann später auf einem zweiten Rechner getestet und da hat es sofort funktioniert. Die laufen beide mit Win10 und es waren beide mit VS2022 kompiliert. Komisch.
Es hat sich dann aber letztendlich herausgestellt, dass dies an ConEmu lag, ein Tool was ich eigentlich ganz gerne verwendet habe, weil es die Standard-Windows Konsole sehr viel benutzbarer macht. Naja, mal schauen was mir langfristig wichtiger ist oder ob ich die Konsole nicht auch dann verstecken kann, wenn ich ConEmu verwende...
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
Re: Visual Studio - Kontrolle über die Konsole
Vielleicht noch zur Info:
ConEmu nutzt AFAIK die Console API auf Windows, um sich mit dem System zu verbinden.
Die haben sie eingeführt, damit andere Applikationen sich leichter als Console ausgeben können und mit dem System interagieren können.
Es könnte sein, dass GetConsoleWindow nicht das Fenster wie erwartet zurückgibt:
https://learn.microsoft.com/en-us/windo ... solewindow
Oder ConEmu reagiert auf die Message einfach nicht wie erwartet.
Wahrscheinlich müsstest du dir das WindowHandle von ConEmu anders besorgen. (Eventuell ist ConEmu der Parent Process von deiner App, wenn du sie darüber startest?)
Aber ConEmu kann ja auch "ich habe ein Fenster mit mehreren Tabs". Willst du das dann trotzdem verstecken? Da weiß ich nicht ob das im Allgemeinen so Sinn macht... als User deiner App wäre ich etwas angepisst wenn mein Fenster dann plötzlich weg ist ;-P
Du könntest also mal versuchen das Handle über den FensterNamen zu holen (um zu schauen ob ConEmu überhaupt auf die Message zum Verstecken reagiert) oder dann final checken ob es ConEmu als ParentProcess von deiner CliApp gibt und dann dessen Fenster verstecken.
Evtl. geht sowas wie GetStdHandle(STD_INPUT_HANDLE).
Aktuell nutze ich ConEmu nicht (mehr), weil es zu viele Bugs hatte und ich keine Funktion mehr brauche, die das neue Windows Terminal mittlerweile nicht auch hat (oder sogar besser darin ist, wie z.B. die Tabs/Panes und GPU accelleration).
Du könntest also auch evtl. einfach darauf verzichten, dein Programm mit dem Ding zu starten ;-)
ConEmu nutzt AFAIK die Console API auf Windows, um sich mit dem System zu verbinden.
Die haben sie eingeführt, damit andere Applikationen sich leichter als Console ausgeben können und mit dem System interagieren können.
Es könnte sein, dass GetConsoleWindow nicht das Fenster wie erwartet zurückgibt:
https://learn.microsoft.com/en-us/windo ... solewindow
This API is not recommended and does not have a virtual terminal equivalent.
D.h. mit dem WindowHandle was da zurückkommt kannst du sie vielleicht gar nicht verstecken.For an application that is hosted inside a pseudoconsole session, this function returns a window handle for message queue purposes only
Oder ConEmu reagiert auf die Message einfach nicht wie erwartet.
Wahrscheinlich müsstest du dir das WindowHandle von ConEmu anders besorgen. (Eventuell ist ConEmu der Parent Process von deiner App, wenn du sie darüber startest?)
Aber ConEmu kann ja auch "ich habe ein Fenster mit mehreren Tabs". Willst du das dann trotzdem verstecken? Da weiß ich nicht ob das im Allgemeinen so Sinn macht... als User deiner App wäre ich etwas angepisst wenn mein Fenster dann plötzlich weg ist ;-P
Du könntest also mal versuchen das Handle über den FensterNamen zu holen (um zu schauen ob ConEmu überhaupt auf die Message zum Verstecken reagiert) oder dann final checken ob es ConEmu als ParentProcess von deiner CliApp gibt und dann dessen Fenster verstecken.
Evtl. geht sowas wie GetStdHandle(STD_INPUT_HANDLE).
Aktuell nutze ich ConEmu nicht (mehr), weil es zu viele Bugs hatte und ich keine Funktion mehr brauche, die das neue Windows Terminal mittlerweile nicht auch hat (oder sogar besser darin ist, wie z.B. die Tabs/Panes und GPU accelleration).
Du könntest also auch evtl. einfach darauf verzichten, dein Programm mit dem Ding zu starten ;-)
Re: Visual Studio - Kontrolle über die Konsole
Jo, das hab ich mir jetzt auch erstmal gedacht. Es ist ja wirklich die Frage, wie sehr ein Programm in das System eingreifen sollte, wenn ein Benutzer eine alternative Konsole verwenden will, dann sollte man ihn daran nicht hindern. Es wäre schön, wenn ConEmu das einfach so unterstützen würde, aber wenn es das nicht tut, und nun auch wirklich nicht unbedingt eine Mainstream-Anwendung ist, lohnt es sich nicht, dafür eigene, komische Hacks einzubauen.
Ansonsten funktioniert ja jetzt alles bei mir wie gewünscht, also nochmal vielen Dank an alle :)
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/