Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 00:46

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[TUT] [VB] Konsole in Form einfügen

Discussion on [TUT] [VB] Konsole in Form einfügen within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
*DerMetzger*'s Avatar
 
elite*gold: 0
Join Date: Feb 2014
Posts: 59
Received Thanks: 10
Lightbulb [TUT] [VB] Konsole in Form einfügen

Hallo Elitepvpers,
Ich will heute ein kleines Tutorial machen, indem ich euch zeigen werde wie man eine Konsole mit einer Windows Forms öffnen kann.

Was wird benötigt?
- Visual Basic 2013
- Basic programmier Skills

Zuerst erstellen wir eine neue "Windows Forms - Anwendung"




Nun machen wir einen Doppelklick auf die Form. Danach Schreiben wir über das "Public Class1":
Code:
Imports System.Runtime.InteropServices
Nun schreiben wir zwischen "Public Class1" und Private Sub Form1_Load(..):
Code:
 <DllImport("kernel32", SetLastError:=True)> _
    Private Shared Function AllocConsole() As Boolean
    End Function
    <DllImport("kernel32", SetLastError:=True)> _
    Private Shared Function FreeConsole() As Boolean
    End Function




Nun Starten wir die Console wenn wir folgenden Code in das Form1 Load Ereignis einfügen:
(bzw. wir bestimmen die Meldung wenn die Konsole nicht Startet.)

Code:
If Not AllocConsole() Then
            MsgBox("Failed to load Console.", 1, "Failed to load Console")
        End If


Jetzt haben wir die Konsole gestartet. Aber wir wollen natürlich auch dass sie eine Funktion hat oder?
Zuerst passen wir die Konsole ein bisschen an:
Code:
 Console.Title = "LOG"
        Console.ForegroundColor = ConsoleColor.Green
        Console.WriteLine("                              Succesfully Started!")
Damit ändern wir den Titel der Konsole, die Schriftfarbe und fügen einen Text ein, der beim Start ausgegben wird.



Ich benutze die Konsole in diesem Tutorial als Log.
Das heißt, dass jede Aktion in der Konsole als Text wiedergegeben wird.
Zum beispiel bei einem Button:


Danach machen wir einen Doppelklick auf den Button und Senden dadurch einen Text an die Konsole. Der Button kann nebenbei auch eine aktion ausführen.
Der Code:
Code:
Console.WriteLine("Button Clicked")
Es sollte nun so aussehen:



Nun hier der Ganze Code:
Code:
Imports System.Runtime.InteropServices
Public Class Form1
    <DllImport("kernel32", SetLastError:=True)> _
    Private Shared Function AllocConsole() As Boolean
    End Function
    <DllImport("kernel32", SetLastError:=True)> _
    Private Shared Function FreeConsole() As Boolean
    End Function
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        If Not AllocConsole() Then
            MsgBox("Failed to load Console.", 1, "Failed to load Console")
        End If
        Console.Title = "LOG"
        Console.ForegroundColor = ConsoleColor.Green
        Console.WriteLine("                              Succesfully Started!")
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Console.WriteLine("Button Clicked")
    End Sub
End Class
Die Konsole in Aktion:


Soo, das wars erstmal von mir.
Ich hoffe ich konnte euch mit diesem kleinen Tutorial weiterhelfen.
Bei Problemen oder Fragen einfach Komments oder eine PN schreiben
Ich würde mich übrigens sehr über ein Thanks freuen
Grüße, *DerMetzger*
*DerMetzger* is offline  
Thanks
5 Users
Old 05/24/2014, 09:41   #2
 
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
In welchem Fall kann keine Konsole geöffnet werden?
dowhile is offline  
Old 05/24/2014, 10:11   #3
 
*DerMetzger*'s Avatar
 
elite*gold: 0
Join Date: Feb 2014
Posts: 59
Received Thanks: 10
In keinem ^^
is ja auch eig. dazu da dass es ein bisschen komplexer aussieht
*DerMetzger* is offline  
Old 05/24/2014, 12:20   #4
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Und was bringt mir das ? Kann genau so gut eine Konsolenanwendung machen und dort eine Form öffnen. Und dabei brauche ich nicht die calls zu den nativen Funktionen zu importen.
th0rex is offline  
Old 05/24/2014, 17:39   #5


 
Requi's Avatar
 
elite*gold: 3570
The Black Market: 244/0/0
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
Oder einfacher.
Man erstellt eine Windows Forms Anwendung.
Ändert es im Projekt zu einer Konsolen Anwendung und tada beides öffnet sich ohne native Funktionen.
Requi is offline  
Old 05/26/2014, 15:02   #6
 
*DerMetzger*'s Avatar
 
elite*gold: 0
Join Date: Feb 2014
Posts: 59
Received Thanks: 10
Viele Leute wisen es vielleicht nicht?
Auch wenn es andere Möglichkeiten gibt, wieso sollte ich dann kein Tutorial über diese Möglichkeit machen dürfen? ^^
*DerMetzger* is offline  
Old 05/26/2014, 15:37   #7


 
Requi's Avatar
 
elite*gold: 3570
The Black Market: 244/0/0
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
Quote:
Originally Posted by *DerMetzger* View Post
Viele Leute wisen es vielleicht nicht?
Auch wenn es andere Möglichkeiten gibt, wieso sollte ich dann kein Tutorial über diese Möglichkeit machen dürfen? ^^
Weil "meine" Möglichkeit kürzer, schneller und konformer ist.
Wieso schwerer machen als es eigentlich ist?
Requi is offline  
Old 05/26/2014, 19:57   #8
 
*DerMetzger*'s Avatar
 
elite*gold: 0
Join Date: Feb 2014
Posts: 59
Received Thanks: 10
Die paar Zeilen Code kann man einfügen ^^ dann is das genauso schnell.
Wieso Einfach wenn es auch Schwer geht?
*DerMetzger* is offline  
Old 05/26/2014, 20:42   #9

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
Hm hm, was macht das hier eigentlich?

Code:
<DllImport("kernel32", SetLastError:=True)> _
Private Shared Function AllocConsole() As Boolean
End Function
<DllImport("kernel32", SetLastError:=True)> _
Private Shared Function FreeConsole() As Boolean
End Function
Muss muss ich dieses FreeConsole() verwenden? Und warum geht jetzt plötzlich Console.WriteLine? Warum weiß das Programm, dass alles auf diese AllocConsole() Konsole da ausgegeben werden soll?
snow is offline  
Thanks
2 Users
Old 05/26/2014, 20:53   #10
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Quote:
Originally Posted by *DerMetzger* View Post
Die paar Zeilen Code kann man einfügen ^^ dann is das genauso schnell.
Wieso Einfach wenn es auch Schwer geht?
Weil es dann Aufgabe des Frameworks ist das richtig hin zu bekommen und das Framework kann es zu 99% besser ( sicherer, schneller).
th0rex is offline  
Old 05/26/2014, 23:14   #11
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Quote:
Originally Posted by omitma View Post
Weil es dann Aufgabe des Frameworks ist das richtig hin zu bekommen und das Framework kann es zu 99% besser ( sicherer, schneller).
Quote:
Originally Posted by msdn
A process can be associated with only one console, so the AllocConsole function fails if the calling process already has a console. A process can use the FreeConsole function to detach itself from its current console, then it can call AllocConsole to create a new console or AttachConsole to attach to another console.
If the calling process creates a child process, the child inherits the new console.
.
Logtetsch is offline  
Old 05/27/2014, 06:17   #12
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
In dem Tut geht es darum eine Konsole zu erstellen, falls du es mitbekommen hast. Das mit dem Framework bezog sich darauf eben nur diese eine Konsole zu erstellen. Das es nur eine Konsole geben kann ist eigentlich logisch. Aber mit ein paar Tricks kann ein Prozess in 2 Konsolen loggen. Nur die 2. Konsole gehört dann nicht dem Prozess der loggt.
th0rex is offline  
Old 05/27/2014, 07:42   #13


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by snow911 View Post
Hm hm, was macht das hier eigentlich?

Code:
<DllImport("kernel32", SetLastError:=True)> _
Private Shared Function AllocConsole() As Boolean
End Function
<DllImport("kernel32", SetLastError:=True)> _
Private Shared Function FreeConsole() As Boolean
End Function
Muss muss ich dieses FreeConsole() verwenden? Und warum geht jetzt plötzlich Console.WriteLine? Warum weiß das Programm, dass alles auf diese AllocConsole() Konsole da ausgegeben werden soll?
Damit importierst du Funktionen aus der kernel32.dll, das braucht C# nunmal wenn es um WinAPI Funktionen geht, da diese nicht im Framework vorhanden sind.

Console.WriteLine geht immer, du siehst halt nur nichts wenn keine Konsole da ist. (Wer hätte es gedacht )

Das Programm weiß nicht, das es alles auf der Konsole ausgeben soll, es schreibt einfach in irgendeinen Datenstrom (weiß ich jetzt auch nicht genauer, sorry) und die Konsole liest den und gibt den wieder. Wo keine Konsole, da keine Ausgabe.

Quote:
Originally Posted by omitma View Post
Das es nur eine Konsole geben kann ist eigentlich logisch.
Wieso? Ich finde das nicht logisch, schließlich kann es auch mehrere Fenster zu einem Prozess geben. Sag's mir wenn ich das Offensichtliche übersehen habe.
Mostey is offline  
Old 05/27/2014, 12:46   #14
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Es gibt nur ein standart Output und ein standart Input (stdout, stdin). Heißt printf/cout schreiben nur zu dem einen Stream. Es könnte bestimmt auch möglich sein das irgendwie anders zu machen, dass man 2 Konsolen nutzen kann. Aber dann müsste Microsoft das implementieren und die entsprechend Funktionen bereitstellen.
th0rex is offline  
Old 05/27/2014, 12:57   #15


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by omitma View Post
Es gibt nur ein standart Output und ein standart Input (stdout, stdin). Heißt printf/cout schreiben nur zu dem einen Stream. Es könnte bestimmt auch möglich sein das irgendwie anders zu machen, dass man 2 Konsolen nutzen kann. Aber dann müsste Microsoft das implementieren und die entsprechend Funktionen bereitstellen.
Macht ja Sinn aber wieso sollte es dann nur eine Konsole geben können? Schließlich kann der Stream ja auch von mehreren Konsolen gelesen werden, es würde eben nur immer das selbe in der Konsole stehen.
Mostey is offline  
Reply


Similar Threads Similar Threads
[C#] Variable aus Form 2 in Form 3
11/27/2013 - .NET Languages - 9 Replies
Hallo, ich bin gerade dabei ein kleinen Bot zu schreiben.. Dabei habe ich eine Form 1 wo mein Browser ( also das Spiel ) drauf läuft. Nun habe ich einen Button, der eine 2 Form öffnet wo man seine Logindaten eingeben kann. Diese daten sollen in string´s gespeichert werden und dann an die Form 3 ( die sich nachdem man Save auf der Form2 gedrückt hat ) gesendet werden und dort dann wieder ausgegeben werden. Doch leider bekomme ich das einfach nicht hin. In google stehen viele verschiedene sachen,...
Neuer Monitor für PC und Konsole, aber bei Konsole kein Sound!
01/08/2012 - Technical Support - 2 Replies
Hey Leute! Ich habe zum meinem 18. einen neuen Monitor bekommen, den S2330mx von DELL. Nun ja ich bin ziemlich zufrieden mit dem Bildschirm. Mein Problem ist halt jetzt, das im Bildschirm keine Lautsprecher eingebaut sind. Und ein Audio Eingang ist auch keiner. Alles am PC läuft gut, aber Sound bei meiner Playstation 3 ist halt nicht da und ich wollte fragen ob man das irgendwie machen könnte, das ich auch Sound habe, wenn ich Playstation spiele. Boxen habe ich auch von DELL und die...
Druid Cat Form -> FireLands Cat Form
08/01/2011 - World of Warcraft - 2 Replies
Hallo Leute, hat jemand die Möglichkeiten mir eine Tauren Katze zur Firelands Katze zu swappen - sofern dies in 4.2 FIRELANDS noch möglich ist. Wobei die Vergangenheit uns gelehrt hat, das es immer Mittel und Wege gibt. (: http://manaflask.com/images/galleries/scaled_1307 971939_flamecat.jpg LG Windkirsche



All times are GMT +1. The time now is 00:47.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.