Console und Windowsfenster
-
MacReeg schrieb:
Hallo zusammen !
Mit etwas unmanaged Code geht alles. Der Beispielcode kann per CheckBox die Console aktivieren und deaktivieren :
using System.Runtime.InteropServices; namespace WinFormAndConsole_1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked) // Abfrage ob CheckBox markiert { Win32.AllocConsole(); // Console aktivieren Console.WriteLine("Console aktiviert !"); } else { Win32.FreeConsole(); // Console freigeben } } } public class Win32 { [DllImport("kernel32.dll")] public static extern Boolean AllocConsole(); [DllImport("kernel32.dll")] public static extern Boolean FreeConsole(); } }
Beste Grüße, Ernst.
Dank dir für deine Hilfe. Aber das ist c++ code, wenn ich das richtig. Ich hab es mal eben probiert und unter c# geht leider "DllImport" nicht.
Gruß, Chris...
btw: Chris83 -> Bubgar ... ich hab mich mal registriert. Das sieht aus, als wäre das hier eine nette Community und da lohnt siche eine Registrierung.
-
Sorry Bubgar wenn ich Dich enttäuschen muss, aber der Quellcode ist in C# mit VS2005 Express geschrieben ;-). Wenn der DLLImport nicht funktioniert, dann liegt das sicherlich daran, dass Du die erste Codezeile 'using System.Runtime.InteropServices;' vergessen hast in Deinen Quellcode zu schreiben.
Gruß Ernst
-
also wenn dllimport in c# nicht gehen würde... oh je.. das wär echt mieß.
-
MacReeg schrieb:
Sorry Bubgar wenn ich Dich enttäuschen muss, aber der Quellcode ist in C# mit VS2005 Express geschrieben ;-). Wenn der DLLImport nicht funktioniert, dann liegt das sicherlich daran, dass Du die erste Codezeile 'using System.Runtime.InteropServices;' vergessen hast in Deinen Quellcode zu schreiben.
Gruß Ernst
Ok, dank dir noch mal. Ich probier es noch mal.. Kann sein, dass ich es auf die schnelle nicht richtig kopiert habe.
Gruß, Bubgar
PS: Enttäuscht hast du mich sicher nicht.
Ich bin ja froh, wenn mir einer hilft.
Noch mal Edit:
Viele dank, jetzt funktioniert es. Ich hatte nur :public class Win32 { [DllImport("kernel32.dll")] public static extern Boolean AllocConsole(); [DllImport("kernel32.dll")] public static extern Boolean FreeConsole(); }
... kopiert
Das war natürlich falsch, bzw. reicht natürlich nicht. Oh man, eigentlich sollte ich es besser wissen. So ein blutiger Anfänger bin ich dann auch wieder nicht.
-
Alternativ kannst unter Projektoptionen den "Output Type" auf Konsolenanwendung stellen.
-
Auch dir danke. Ich werd das mal probieren.
-
scap schrieb:
Alternativ kannst unter Projektoptionen den "Output Type" auf Konsolenanwendung stellen.
Ich vermute aber, dass er ein Windowsprojekt haben möchte (also ne GUI
) und dazu soll auch ne Konsole geöffnet werden. Also wird ihm - ausser ich täusche mich - das nichts nützen.
-
Tja Lyrix du hast halt keine Ahnung willst aber trotzdem mal den Mund aufmachen.
-
Sehr richtig.
-
... schrieb:
Tja Lyrix du hast halt keine Ahnung willst aber trotzdem mal den Mund aufmachen.
,,, schrieb:
Sehr richtig.
Bei manchen Leuten ist es wirklich gut, dass sie nicht registrierte User sind - das ist wiedermal Bildzeitungsniveau !
Gruß Ernst
-
Lyrix schrieb:
Ich vermute aber, dass er ein Windowsprojekt haben möchte (also ne GUI
) und dazu soll auch ne Konsole geöffnet werden. Also wird ihm - ausser ich täusche mich - das nichts nützen.
Bei einer Konsolenanwendung ist auch eine ganz normale GUI möglich, nur wird zusätzlich die Konsole gestartet bzw. wird in der Konsole die Fensteranwendung gestartet. Ich persönlich finde das die sauberste Lösung, da ich den Eindruck habe, dass Chris83 die Konsole zu Debug-Zwecken braucht.
-
scap schrieb:
.....
da ich den Eindruck habe, dass Chris83 die Konsole zu Debug-Zwecken braucht.Da liegst du nicht ganz falsch.;) Ich möchte in der Console schreiben, wo im Programm ich denn gerade bin. Bei Java hat das ganz gut funktioniert und hier wollte ich das auch so machen. Aber leider hat hab ich die Option nicht gefunden, die du meinst. Kannste bitte etwas genauer sagen, wo das sein soll.
Ich hab Visual Studio 2005 Pro. Ed. Englische Version...
-
Bubgar schrieb:
Aber leider hat hab ich die Option nicht gefunden, die du meinst. Kannste bitte etwas genauer sagen, wo das sein soll.
Ich hab Visual Studio 2005 Pro. Ed. Englische Version...Project -> Properties -> im Reiter "Application"
Edit:
Übrigends: Konsolenausgaben werden im Debug Modus auch im "Output" Fenster von VS angezeigt.
-
scap schrieb:
Lyrix schrieb:
Ich vermute aber, dass er ein Windowsprojekt haben möchte (also ne GUI
) und dazu soll auch ne Konsole geöffnet werden. Also wird ihm - ausser ich täusche mich - das nichts nützen.
Bei einer Konsolenanwendung ist auch eine ganz normale GUI möglich, nur wird zusätzlich die Konsole gestartet bzw. wird in der Konsole die Fensteranwendung gestartet. Ich persönlich finde das die sauberste Lösung, da ich den Eindruck habe, dass Chris83 die Konsole zu Debug-Zwecken braucht.
Ah gut, man lernt nie aus
-
scap schrieb:
.....
Edit:
Übrigends: Konsolenausgaben werden im Debug Modus auch im "Output" Fenster von VS angezigt.Aha, gut zu wissen.