Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Topic started by: fernando.fetis on 7 March 2010, 01:31 AM

Title: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: fernando.fetis on 7 March 2010, 01:31 AM
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...
Title: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: WHK on 7 March 2010, 07:44 AM
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
Code (vbnet) Select
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
Code (vbnet) Select
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.
Title: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: EddyW on 7 March 2010, 09:09 AM
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 (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!!!
Title: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: WHK on 7 March 2010, 10:48 AM
ah super, es una buena alternativa.

ahora... como obtienes los argumentos cuando lo llamas desde la consola? :p , porque cuando inicia:
Code (vb) Select
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.
Title: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: Karcrack on 7 March 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
Title: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: Dessa on 7 March 2010, 14:06 PM
Quote from: Karcrack on  7 March 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
Title: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: fernando.fetis on 7 March 2010, 20:08 PM
Muchas gracias, no me funcionaron mucho los codigo pero entendi un poco como se hace todo...
Title: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: EddyW on 9 March 2010, 17:06 PM
Quote from: Karcrack on  7 March 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!!!
Title: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: Karcrack on 9 March 2010, 19:56 PM
Quote from: 3D1 on  9 March 2010, 17:06 PM
Quote from: Karcrack on  7 March 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/
Title: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: ssccaann43 © on 9 March 2010, 20:28 PM
3D1 No has regresado del cole??? XD
Title: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Post by: EddyW on 10 March 2010, 02:12 AM
Quote from: ssccaann43 on  9 March 2010, 20:28 PM
3D1 No has regresado del cole??? XD
No, hoy tuve una hora mas de clases acabo de llegar para ser exacto a las 9:00Pm ahora son las 9:10Pm :P



Bueno, si, esa era la pagina:
http://vb.mvps.org/samples/Console/ (http://vb.mvps.org/samples/Console/)

SaluDOS!!!