Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: fernando.fetis en 7 Marzo 2010, 01:31 am



Título: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: fernando.fetis en 7 Marzo 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...


Título: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: WHK en 7 Marzo 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
Código
  1. Option
  2. Explicit On
  3. Option Strict On
  4.  
  5. Imports System.Runtime.InteropServices
  6. Imports Win32.Kernel32.ConsoleColor
  7.  
  8. Namespace Win32.Kernel32
  9.  
  10.  Class ConsoleColor
  11.  
  12.      Public Enum ForegroundColors
  13.        Black = 0
  14.        Blue = 1
  15.        Green = 2
  16.        Cyan = Blue Or Green
  17.        Red = 4
  18.        Magenta = Blue Or Red
  19.        Yellow = Green Or Red
  20.        White = Blue Or Green Or Red
  21.        Gray = 8
  22.        LightBlue = Gray Or Blue
  23.        LightGreen = Gray Or Green
  24.        LightCyan = Gray Or Cyan
  25.        LightRed = Gray Or Red
  26.        LightMagenta = Gray Or Magenta
  27.        LightYellow = Gray Or Yellow
  28.        BrightWhite = Gray Or White
  29.      End Enum
  30.  
  31.  
  32. Public Enum BackgroundColors
  33.        Black = 0
  34.        Blue = 16
  35.        Green = 32
  36.        Cyan = Blue Or Green
  37.        Red = 64
  38.        Magenta = Blue Or Red
  39.        Yellow = Green Or Red
  40.        White = Blue Or Green Or Red
  41.        Gray = 128
  42.        LightBlue = Gray Or Blue
  43.        LightGreen = Gray Or Green
  44.        LightCyan = Gray Or Cyan
  45.        LightRed = Gray Or Red
  46.        LightMagenta = Gray Or Magenta
  47.        LightYellow = Gray Or Yellow
  48.        BrightWhite = Gray Or White
  49.    End Enum
  50.  
  51.    Public Enum Attributes
  52.        None = &H0
  53.        GridHorizontal = &H400
  54.        GridLVertical = &H800
  55.        GridRVertical = &H1000
  56.        ReverseVideo = &H4000
  57.        Underscore = &H8000
  58.    End Enum
  59.  
  60.   Private Const STD_OUTPUT_HANDLE As Integer = -11
  61.   Private Shared InvalidHandleValue As New IntPtr(-1)
  62.  
  63.   Private Sub New()
  64.     ' This class can not be instantiated.
  65.   End Sub
  66.  
  67.   ' Our wrapper implementations.
  68.   Public Overloads Shared Sub SetConsoleColor(ByVal foreground As ForegroundColors)
  69.      SetConsoleColor(foreground, BackgroundColors.Black, Attributes.None)
  70.   End Sub
  71.  
  72.   Public Overloads Shared Sub SetConsoleColor(ByVal foreground As ForegroundColors, _
  73.                                                                                        ByVal background As BackgroundColors)
  74.      SetConsoleColor(foreground, background, Attributes.None)
  75.   End Sub
  76.  
  77.   Public Overloads Shared Sub SetConsoleColor(ByVal foreground As ForegroundColors, _
  78.                                                                                         ByVal background As BackgroundColors, _
  79.                                                                                        ByVal attribute As Attributes)
  80.     Dim handle As IntPtr = GetStdHandle(STD_OUTPUT_HANDLE)
  81.     If handle.Equals(InvalidHandleValue) Then
  82.       Throw New System.ComponentModel.Win32Exception()
  83.     End If
  84.      ' We have to convert the integer flag values into a Unsigned Short (UInt16) to pass to the
  85.      ' SetConsoleTextAttribute API call.
  86.     Dim value As UInt16 = System.Convert.ToUInt16(foreground Or background Or attribute)
  87.     If Not SetConsoleTextAttribute(handle, value) Then
  88.       Throw New System.ComponentModel.Win32Exception()
  89.     End If
  90.   End Sub
  91.  
  92.    ' DLLImport's (Win32 functions)
  93.   True)> _
  94.   Private Shared Function GetStdHandle(ByVal stdHandle As Integer) As IntPtr
  95.   End Function
  96.  
  97.   True)> _
  98.   Private Shared Function SetConsoleTextAttribute(ByVal consoleOutput As IntPtr, _
  99.    ByVal Attributes As UInt16) As Boolean
  100.   End Function
  101.  
  102.  End Class
  103.  
  104. End
  105. Namespace

ConsoleColorTest.vb
Código
  1. Option
  2. Explicit On
  3. Option Strict On
  4.  
  5. Imports Win32.Kernel32.ConsoleColor
  6.  
  7. Module ConsoleColorTest
  8.  Sub Main()
  9.  
  10.    Dim bgcolor As BackgroundColors
  11.    Dim fgcolor As ForegroundColors
  12.  
  13.    ' Show every variation of the color combinations.
  14.    For Each bgcolor In [Enum].GetValues(GetType(BackgroundColors))
  15.      For Each fgcolor In [Enum].GetValues(GetType(ForegroundColors))
  16.        SetConsoleColor(fgcolor, bgcolor)
  17.        Console.WriteLine(bgcolor.ToString.PadRight(15) & fgcolor.ToString.PadRight(64))
  18.      Next
  19.    Next
  20.  
  21.    ' Set the color back to the default.
  22.    SetConsoleColor(ForegroundColors.White, BackgroundColors.Black)
  23.  
  24.    ' Wait for input, so we can view the results.
  25.    Console.ReadLine()
  26.  End Sub
  27. End Module

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

Saludos.


Título: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: EddyW en 7 Marzo 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!!!


Título: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: WHK en 7 Marzo 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:
Código
  1. Private Sub Form_Load()
  2. Call AllocConsole                        ' Creamos la consola
  3. StdOut = GetStdHandle(STD_OUTPUT_HANDLE) ' Handle de Salida
  4. StdIn = GetStdHandle(STD_INPUT_HANDLE)   ' Handle de Entrada
  5. Call SubConsole
  6. 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.


Título: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: Karcrack en 7 Marzo 2010, 13:06 pm
Claro que en VB se puede hacer una aplicacion de consola:
Código:
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


Título: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: Dessa en 7 Marzo 2010, 14:06 pm
Claro que en VB se puede hacer una aplicacion de consola:
Código:
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


Título: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: fernando.fetis en 7 Marzo 2010, 20:08 pm
Muchas gracias, no me funcionaron mucho los codigo pero entendi un poco como se hace todo...


Título: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: EddyW en 9 Marzo 2010, 17: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!!!


Título: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: Karcrack en 9 Marzo 2010, 19:56 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:
Código:
http://vb.mvps.org/samples/Console/


Título: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: ssccaann43 © en 9 Marzo 2010, 20:28 pm
3D1 No has regresado del cole??? XD


Título: Re: Como Crear Una Consola Como La De Turbo C en Visual Basic O Otro lenguaje
Publicado por: EddyW en 10 Marzo 2010, 02:12 am
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!!!