Entwickler-Ecke

WinForms - Konsole aufrufen?


Cäptin Pommes - Do 06.10.11 19:40
Titel: Konsole aufrufen?
hi,

kann man wenn man ein Windows Forms Projekt hat die Konsole aufrufen? wenn ja, wie soll das gehen?


storestore - Do 06.10.11 19:46

Das kenne ich doch irrgendwo her?!
http://www.c-sharp-forum.de/viewtopic.php?t=107019


pdelvo - Do 06.10.11 19:47

user profile iconCäptin Pommes hat folgendes geschrieben Zum zitierten Posting springen:
hi,

kann man wenn man ein Windows Forms Projekt hat die Konsole aufrufen? wenn ja, wie soll das gehen?


Soll sie die ganze Zeit mitlaufen?

Wenn ja in den Projekteigenschafften auf Konsolenprojekt umschallten

Wenn Nein:


C#-Quelltext
1:
2:
3:
4:
    [DllImport("kernel32",SetLastError=true)]
    static extern bool AllocConsole();
    [DllImport("kernel32", SetLastError = true)]
    static extern bool FreeConsole();


Cäptin Pommes - Fr 07.10.11 09:47

hmm und wie läuft das wenn ich ein Konsolen projekt habe, kann ich dann die Konsole deaktivieren und aktivieren? bzw verstecken oder so?


Cäptin Pommes - Fr 07.10.11 11:15

also ich hab das jetzt so:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
class Class1
    {
        [DllImport("kernel32", SetLastError = true)]
        static extern bool AllocConsole();
        [DllImport("kernel32", SetLastError = true)]
        static extern bool FreeConsole();

        public void bla()
        {
            Console.WriteLine("HALLO!!!!!!!!!!!!!");
            Console.Read();
        }
    }


aber wenn ich die die methode bla aufrufe dann passiert nichts :/ muss ich die Console noch vorher sichtbar machen? ich finde jedenfalls keine eigenschaft um das zu setzen :/


Th69 - Fr 07.10.11 11:27

Hallo,

du mußt natürlich die Funktion auch noch aufrufen :gruebel:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
public void bla()
{
    Class1.AllocConsole();
            
    Console.WriteLine("HALLO!!!!!!!!!!!!!");
    Console.Read();
}

[DllImport] in Verbindung mit "extern" ist nur eine Methoden-Deklaration.

Und besser ist es diese Deklarationen in eine eigene statische Klasse (z.B. WinAPI) auszulagern. Dann sieht man anhand des Namens sofort, woher die Methode stammt:

C#-Quelltext
1:
WinAPI.AllocConsole();                    


Cäptin Pommes - Fr 07.10.11 11:33

ah ^^ alles klar, vielen dank