vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: System/Windows · Konsole   |   VB-Versionen: VB4, VB5, VB611.01.01
Konsolen Aufruf mit Wertuebergabe

Sicherlich fragen sich jetzt viele von Ihnen: Konsolenaufruf - was ist das?Das hier vorgestellte Beispiel zeigt, wie man gezielt von einer VB-Anwend...

Autor:   Heinz PrelleBewertung:     [ Jetzt bewerten ]Views:  22.257 
www.visual-basic5.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Sicherlich fragen sich jetzt viele von Ihnen: Konsolenaufruf - was ist das?

Das hier vorgestellte Beispiel zeigt, wie man gezielt von einer VB-Anwendung aus, das MS-DOS Eingabefenster steuern kann. Es wird hier z.B. die Eingabe einer Zahl zwischen 1 und 10 verlangt. Nachdem der Anwender die Eingabe mit Enter abgeschlossen hat, wird geprüft, ob es sich um eine zulässige Eingabe handelt. Je nach Ergebnis wird ein entsprechender Text in das Fenster "geschrieben". Das Eingabefenster wird dann programmgesteuert wieder geschlossen.

' Beispiel : Konsolenaufruf
Private Declare Function SetConsoleMode Lib "kernel32" ( _
  ByVal hConsoleOutput As Long, _
  dwMode As Long) As Long
Private Declare Function FreeConsole Lib "kernel32" () As Long
Private Declare Function GetStdHandle Lib "kernel32" ( _
  ByVal nStdHandle As Long) As Long
Private Declare Function WriteConsole Lib "kernel32" _
  Alias "WriteConsoleA" ( _
  ByVal hConsoleOutput As Long, _
  ByVal lpBuffer As Any, _
  ByVal nNumberOfCharsToWrite As Long, _
  lpNumberOfCharsWritten As Long, _
  lpReserved As Any) As Long
Private Declare Function AllocConsole Lib "kernel32" () As Long
Private Declare Function ReadConsole Lib "kernel32" _
  Alias "ReadConsoleA" ( _
  ByVal hConsoleInput As Long, _
  ByVal lpBuffer As String, _
  ByVal nNumberOfCharsToRead As Long, _
  lpNumberOfCharsRead As Long, _
  lpReserved As Any) As Long
 
Private Const STD_INPUT_HANDLE = -10&
Private Const STD_OUTPUT_HANDLE = -11&
Private Const STD_ERROR_HANDLE = -12&
Private Const ENABLE_LINE_INPUT = &H2
Private Const ENABLE_ECHO_INPUT = &H4
Private Const ENABLE_MOUSE_INPUT = &H10
Private Const ENABLE_PROCESSED_INPUT = &H1
Private Const ENABLE_WINDOW_INPUT = &H8
Private Const ENABLE_PROCESSED_OUTPUT = &H1
Private Const ENABLE_WRAP_AT_EOL_OUTPUT = &H2
 
Private Sub Command1_Click()
  Unload Me
End Sub
 
Private Sub Command2_Click()
  Dim strAusgabe As String
  Dim lngHEingabe As Long
  Dim lngHAusgabe As Long
  Dim lngHFehler As Long
  Dim strEingabeCount As String * 255
 
  AllocConsole
  lngHEingabe = GetStdHandle(STD_INPUT_HANDLE)
  lngHAusgabe = GetStdHandle(STD_OUTPUT_HANDLE)
  lngHFehler = GetStdHandle(STD_ERROR_HANDLE)
  SetConsoleMode lngHEingabe, ENABLE_ECHO_INPUT
  strAusgabe = "Geben Sie eine Zahl zwischen 1 und 10 ein." _
    & vbCrLf
  WriteConsole lngHAusgabe, strAusgabe, Len(strAusgabe), _
    vbNull, vbNull
  ReadConsole lngHEingabe, strEingabeCount, _
    Len(strEingabeCount), vbNull, vbNull
  strEingabeCount = funcTrim(strEingabeCount)
  If IsNumeric(strEingabeCount) Then
    If CLng(strEingabeCount) < 1 Or _
     CLng(strEingabeCount) > 10 Then
      strAusgabe = "Sie muessen den Anweisungen folgen..."
    Else
      strAusgabe = "Ihre Eingabe war : " & strEingabeCount
    End If
  Else
    strAusgabe = "Sie muessen den Anweisungen folgen..."
  End If
  strAusgabe = strAusgabe & vbCrLf
  WriteConsole lngHAusgabe, strAusgabe, Len(strAusgabe), _
    vbNull, vbNull
  strAusgabe = "Druecken Sie ENTER um zu Beenden." & vbCrLf
  WriteConsole lngHAusgabe, strAusgabe, Len(strAusgabe), _
    vbNull, vbNull
  ReadConsole lngHEingabe, strEingabeCount, _
    Len(strEingabeCount), vbNull, vbNull
  strEingabeCount = funcTrim(strEingabeCount)
  FreeConsole
End Sub
 
Public Function funcTrim(ByVal strEingabeString As String) _
  As String
 
  Dim strAnt As String
  Dim strZeichen As String
  Dim lngLaenge As Long
  Dim lngStr As Long
 
  strAnt = strEingabeString
  lngLaenge = Len(strEingabeString)
  If lngLaenge > 0 Then
    For lngStr = 1 To lngLaenge
      strZeichen = Mid(strAnt, lngStr, 1)
      If Asc(strZeichen) > 32 Then Exit For
    Next
    strAnt = Mid(strAnt, lngStr)
    lngLaenge = Len(strAnt)
    If lngLaenge > 0 Then
      For lngStr = lngLaenge To 1 Step -1
        strZeichen = Mid(strAnt, lngStr, 1)
        If Asc(strZeichen) > 32 Then Exit For
      Next
    End If
    strAnt = Left$(strAnt, lngStr)
  End If
  funcTrim = strAnt
End Function

Am besten Sie schauen sich das kleine Anwendungsbeispiel an und probieren es einmal aus.
 

Dieser Tipp wurde bereits 22.257 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel