Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje

Iniciado por fernando.fetis, 7 Marzo 2010, 01:31 AM

0 Miembros y 2 Visitantes están viendo este tema.

fernando.fetis

Hola quisiera saber como crear una consola con el estilo de turbo c, con colores, que al rpecioinar un texto me lleve a otra parte, etc y si no es en visual basic 2008, en que otro programa puede ser, agradecido, fernando...

WHK

en visual basic 6 no puedes ya que solo crea aplicaciones GUI.
en vb8 puedes usar colores con Console.BackgroundColor o Console.ForegroundColor aunque esto te cambia el color completo tal como lo hace el comando "color".

Para crear menus y esas cosas no lo se porque en c++ se utiliza la librería conio.h pero no se si habrá alguna adaptación para vb.net

Ahora, encontré un pequeño ejemplo googleando:

ConsoleColor.vb
Código (vbnet) [Seleccionar]
Option
Explicit On
Option Strict On

Imports System.Runtime.InteropServices
Imports Win32.Kernel32.ConsoleColor

Namespace Win32.Kernel32

  Class ConsoleColor

      Public Enum ForegroundColors
        Black = 0
        Blue = 1
        Green = 2
        Cyan = Blue Or Green
        Red = 4
        Magenta = Blue Or Red
        Yellow = Green Or Red
        White = Blue Or Green Or Red
        Gray = 8
        LightBlue = Gray Or Blue
        LightGreen = Gray Or Green
        LightCyan = Gray Or Cyan
        LightRed = Gray Or Red
        LightMagenta = Gray Or Magenta
        LightYellow = Gray Or Yellow
        BrightWhite = Gray Or White
      End Enum

     
Public Enum BackgroundColors
        Black = 0
        Blue = 16
        Green = 32
        Cyan = Blue Or Green
        Red = 64
        Magenta = Blue Or Red
        Yellow = Green Or Red
        White = Blue Or Green Or Red
        Gray = 128
        LightBlue = Gray Or Blue
        LightGreen = Gray Or Green
        LightCyan = Gray Or Cyan
        LightRed = Gray Or Red
        LightMagenta = Gray Or Magenta
        LightYellow = Gray Or Yellow
        BrightWhite = Gray Or White
    End Enum

    Public Enum Attributes
        None = &H0
        GridHorizontal = &H400
        GridLVertical = &H800
        GridRVertical = &H1000
        ReverseVideo = &H4000
        Underscore = &H8000
    End Enum

   Private Const STD_OUTPUT_HANDLE As Integer = -11
   Private Shared InvalidHandleValue As New IntPtr(-1)

   Private Sub New()
     ' This class can not be instantiated.
   End Sub

   ' Our wrapper implementations.
   Public Overloads Shared Sub SetConsoleColor(ByVal foreground As ForegroundColors)
      SetConsoleColor(foreground, BackgroundColors.Black, Attributes.None)
   End Sub

   Public Overloads Shared Sub SetConsoleColor(ByVal foreground As ForegroundColors, _
                                                                                        ByVal background As BackgroundColors)
      SetConsoleColor(foreground, background, Attributes.None)
   End Sub

   Public Overloads Shared Sub SetConsoleColor(ByVal foreground As ForegroundColors, _
                                                                                         ByVal background As BackgroundColors, _
                                                                                        ByVal attribute As Attributes)
     Dim handle As IntPtr = GetStdHandle(STD_OUTPUT_HANDLE)
     If handle.Equals(InvalidHandleValue) Then
       Throw New System.ComponentModel.Win32Exception()
     End If
      ' We have to convert the integer flag values into a Unsigned Short (UInt16) to pass to the
      ' SetConsoleTextAttribute API call.
     Dim value As UInt16 = System.Convert.ToUInt16(foreground Or background Or attribute)
     If Not SetConsoleTextAttribute(handle, value) Then
       Throw New System.ComponentModel.Win32Exception()
     End If
   End Sub

    ' DLLImport's (Win32 functions)
   True)> _
   Private Shared Function GetStdHandle(ByVal stdHandle As Integer) As IntPtr
   End Function

   True)> _
   Private Shared Function SetConsoleTextAttribute(ByVal consoleOutput As IntPtr, _
    ByVal Attributes As UInt16) As Boolean
   End Function

  End Class

End
Namespace


ConsoleColorTest.vb
Código (vbnet) [Seleccionar]
Option
Explicit On
Option Strict On

Imports Win32.Kernel32.ConsoleColor

Module ConsoleColorTest
  Sub Main()

    Dim bgcolor As BackgroundColors
    Dim fgcolor As ForegroundColors

    ' Show every variation of the color combinations.
    For Each bgcolor In [Enum].GetValues(GetType(BackgroundColors))
      For Each fgcolor In [Enum].GetValues(GetType(ForegroundColors))
        SetConsoleColor(fgcolor, bgcolor)
        Console.WriteLine(bgcolor.ToString.PadRight(15) & fgcolor.ToString.PadRight(64))
      Next
    Next

    ' Set the color back to the default.
    SetConsoleColor(ForegroundColors.White, BackgroundColors.Black)

    ' Wait for input, so we can view the results.
    Console.ReadLine()
  End Sub
End Module


Fuente: http://addressof.com/blog/articles/227.aspx

Saludos.

EddyW

En VB6 si se puede, aunque no este echo para eso..
Mira:
(Sin intención de Spam, coloco solo como referencia..)
http://foro.portalhacker.net/index.php/topic,99962.0.html

No es tan simple como en VB.net, pero los resultados son buenos, al ejecutar funciona bien, pero el ultimo toque es cambiar con un editor binario o con Link.exe el SubSystem del ejecutable a "Console"..

SaluDOS!!!

WHK

ah super, es una buena alternativa.

ahora... como obtienes los argumentos cuando lo llamas desde la consola? :p , porque cuando inicia:
Código (vb) [Seleccionar]
Private Sub Form_Load()
Call AllocConsole                        ' Creamos la consola
StdOut = GetStdHandle(STD_OUTPUT_HANDLE) ' Handle de Salida
StdIn = GetStdHandle(STD_INPUT_HANDLE)   ' Handle de Entrada
Call SubConsole
End Sub


solo obtiene los buffers de entrada y salida pero no hay argumentos  :-\ aunque de todas se pueden obtener llamando las funciones necesarias desde la librería nativa del kernel de windows.

Karcrack

Claro que en VB se puede hacer una aplicacion de consola:
http://foro.elhacker.net/programacion_vb/crear_aplicaciones_de_consola_con_vb_intermedio-t230818.0.html;msg1099575
http://foro.elhacker.net/programacion_vb/crear_aplicaciones_de_consola_vb_avanzado_clase-t230908.0.html

Y no es necesario recurrir al spam :P

Dessa

Cita de: Karcrack en  7 Marzo 2010, 13:06 PM
Claro que en VB se puede hacer una aplicacion de consola:
http://foro.elhacker.net/programacion_vb/crear_aplicaciones_de_consola_con_vb_intermedio-t230818.0.html;msg1099575
http://foro.elhacker.net/programacion_vb/crear_aplicaciones_de_consola_vb_avanzado_clase-t230908.0.html

Y no es necesario recurrir al spam :P

+1
Adrian Desanti

fernando.fetis

Muchas gracias, no me funcionaron mucho los codigo pero entendi un poco como se hace todo...

EddyW

Cita de: Karcrack en  7 Marzo 2010, 13:06 PM
Y no es necesario recurrir al spam :P
No recurrí al Spam solo hice una referencia, no creo que les guste que coloque "No recurran al Spam", cuando vea un link a elhacker.net en otro foro.. ;)



Fuera de eso, Karl E. Peterson de la MVPS de Microsoft en su pagina principal tiene un Modulo Clase para trabajar con la consola, incluye KeyPress o algo así, para detectar la tecla que presionaste, ReadPassword, para contraseñas muestra lo que escribes en "*", Cambiar los Buffer de la pantalla, posicionar el cursor de la consola en un lugar de la consola ;D, entre otros, creo que hizo una actualización de su modulo.

No recuerdo la pagina, al regresar del Cole subo el Modulo a MediaFire y se los paso..
SaluDOS!!!

Karcrack

Cita de: 3D1 en  9 Marzo 2010, 17:06 PM
Cita de: Karcrack en  7 Marzo 2010, 13:06 PM
Y no es necesario recurrir al spam :P
No recurrí al Spam solo hice una referencia, no creo que les guste que coloque "No recurran al Spam", cuando vea un link a elhacker.net en otro foro.. ;)
Era una broma hombre :xD


Aqui esta:
http://vb.mvps.org/samples/Console/

ssccaann43 ©

- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"