elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Crear aplicaciones de Consola con VB {INTERMEDIO}
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear aplicaciones de Consola con VB {INTERMEDIO}  (Leído 3,992 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Crear aplicaciones de Consola con VB {INTERMEDIO}
« en: 9 Octubre 2008, 19:39 pm »

Indice:
  • Introduccion
  • Manos a la obra
  • Salida
  • Entrada
  • Finalizando
  • Ejemplo
  • Despedida



Introduccion:

Todo el mundo sabe que una aplicacion de consola es una aplicacion que se muestra desde la linea de comandos (CMD.exe,Command Prompt...).

Una captura para que quede aun mas claro:





Manos a la obra:

En este manual, como es nivel 'intermedio', explicare el uso de In/Out (Entrada/Salida) usando FSO (FileSystemObject). Envez de usando las APIs, seguramente saque de aqui un tiempo una clase para hacerlo usando APIs.

La funciones esta perfectamente comentadas para que no haya ningunas dudas ;)

Salida:

Aqui esta la funcion para enviar algo a nuestra consola:

Código
  1. Public Function SendCMD(ByVal sData As String) As Boolean
  2.    'Si hay algun error devuelve False, si todo ha ido bien devuelve True
  3.    On Error GoTo Fallo
  4.  
  5.    Dim FSO         As Object
  6.    Dim sOut        As Object
  7.    'Cargamos los objectos
  8.    Set FSO = CreateObject("Scripting.FileSystemObject")
  9.    Set sOut = FSO.GetStandardStream(1) ' StdOut = 1
  10.    'Llamamos a la funcion que envia la informacion
  11.    Call sOut.WriteLine(sData)
  12.    'Descargamos los objetos
  13.    Set sOut = Nothing
  14.    Set FSO = Nothing
  15.    'Devolvemos True, todo ha ido bien
  16.    SendCMD = True
  17.    'Salimos de la funcion
  18.    Exit Function
  19. Fallo:
  20.    'Algo fallo, devolvemos False
  21.    SendCMD = False
  22. End Function

Entrada:

Esta funcion obtiene los datos que hay en nuestro Command Prompt

Código
  1. Public Function GetCMD(Optional ByVal ReadLine As Boolean = False, Optional ByVal Caracteres As Long = 0) As String
  2.    Dim FSO         As Object
  3.    Dim sIn         As Object
  4.  
  5.    'Cargamos los objectos
  6.    Set FSO = CreateObject("Scripting.FileSystemObject")
  7.    Set sIn = FSO.GetStandardStream(0) ' StdIn = 0
  8.  
  9.    If ReadLine = False Then
  10.        'Si no queremos la ultima linea
  11.        If Caracteres = 0 Then
  12.            'Si lo queremos todo
  13.            GetCMD = sIn.ReadAll
  14.        Else
  15.            'Si solo queremos los ultimos n Caracteres
  16.            GetCMD = sIn.Read(Caracteres)
  17.        End If
  18.    Else
  19.        'Si queremos solo la ultima linea
  20.        GetCMD = sIn.ReadLine
  21.    End If
  22.    'Descargamos los objetos
  23.    Set sIn = Nothing
  24.    Set FSO = Nothing
  25. End Function



Finalizando:

Una vez hemos codeado nuestra aplicacion y esta terminada del todo hemos de compilarla de forma normal. Pero para que se puede ejecutar desde el CMD.exe hemos de modificar el ejecutable, para hacerlo nos serviremos de este comando del LINK.exe:

Código:
LINK /EDIT /SUBSYSTEM:CONSOLE <Ruta Ejecutable>

He hecho un diminuto script VBS para que al arrastrar nuestro ejecutable lo transforme en Command Prompt compatible ;) aqui esta, para usarlo habeis de guardarlo con el bloc de notas en formato *.vbs y arrastrar el ejecutable que querais modificar.

Código:
Dim StrLINK     ,StrEXE      ,WSHShell   

'Ruta del LINK.exe de la carpeta VB
StrLINK = """C:\Archivos de programa\Microsoft Visual Studio\VB98\LINK.EXE"""
'Ruta del ejecutable que arrastras
StrEXE = """" & WScript.Arguments(0) & """"
Set WSHShell = CreateObject("WScript.Shell")

WSHShell.Run StrLINK & " /EDIT /SUBSYSTEM:CONSOLE " & StrEXE , 0

Set WSHShell = Nothing
WScript.Echo "Finalizado!!"

Una vez nuestro ejecutable ya ha sido editado para que se ejecute por linea de comandos ya podra ser utilizado :D.



Ejemplo:

Este es un codigo de ejemplo de una calculadora :D (Tambien lo adjunto al Post)

En un formulario:
Código:
Option Explicit

Private Sub Form_Load()
    Dim Numero1     As Long
    Dim Numero2     As Long
    Dim Operacion   As String
    Dim Resultado   As Double
   
    'Para que no se vea la ventana
    Form1.Visible = False
    'Pedimos el primer numero
    Call SendCMD("Introduce el primer numero:")
    'Lo obtenemos
    Numero1 = GetCMD(True)
    'Pedimos el segundo
    Call SendCMD("Introduce el segundo numero:")
    'Lo obtenemos
    Numero2 = GetCMD(True)
    'Pedimos la operacion
    Call SendCMD("Introduce la operacion:" & vbCrLf & " + para suma" & vbCrLf & " - para resta" & vbCrLf & " * para multiplicacion" & vbCrLf & " / para division")
    'La obtenemos
    Operacion = GetCMD(False, 1)
    'Hacemos la operacion
    Select Case Operacion
        Case "+"
            Resultado = Numero1 + Numero2
        Case "-"
            Resultado = Numero1 - Numero2
        Case "*"
            Resultado = Numero1 * Numero2
        Case "/"
            Resultado = Numero1 / Numero2
    End Select
    'Devolvemos el resultado
    Call SendCMD(Resultado & vbCrLf)
    End
End Sub

Public Function SendCMD(ByVal sData As String) As Boolean
    'Si hay algun error devuelve False, si todo ha ido bien devuelve True
    On Error GoTo Fallo
   
    Dim FSO         As Object
    Dim sOut        As Object
    'Cargamos los objectos
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set sOut = FSO.GetStandardStream(1) ' StdOut = 1
    'Llamamos a la funcion que envia la informacion
    Call sOut.WriteLine(sData)
    'Descargamos los objetos
    Set sOut = Nothing
    Set FSO = Nothing
    'Devolvemos True, todo ha ido bien
    SendCMD = True
    'Salimos de la funcion
    Exit Function
Fallo:
    'Algo fallo, devolvemos False
    SendCMD = False
End Function

Public Function GetCMD(Optional ByVal ReadLine As Boolean = False, Optional ByVal Caracteres As Long = 0) As String
    Dim FSO         As Object
    Dim sIn         As Object
   
    'Cargamos los objectos
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set sIn = FSO.GetStandardStream(0) ' StdIn = 0
   
    If ReadLine = False Then
        'Si no queremos la ultima linea
        If Caracteres = 0 Then
            'Si lo queremos todo
            GetCMD = sIn.ReadAll
        Else
            'Si solo queremos los ultimos n Caracteres
            GetCMD = sIn.Read(Caracteres)
        End If
    Else
        'Si queremos solo la ultima linea
        GetCMD = sIn.ReadLine
    End If
    'Descargamos los objetos
    Set sIn = Nothing
    Set FSO = Nothing
End Function



Despedida:

Bueno, ya esta todo explicado :D, cualquier duda avisen :D.
De aqui un tiempo sacare una clase que permitira hacer esto, pero con APIs, ademas de permitir cambiar el color al texto y otras cosas :P.

Saludos :D, espero que hayan aprendido mucho :P

Pueden distribuirlo libremente siempre que pongan la fuente y el autor, yo, Karcrack.


En línea

aaronduran2


Desconectado Desconectado

Mensajes: 790



Ver Perfil WWW
Re: Crear aplicaciones de Consola con VB {INTERMEDIO}
« Respuesta #1 en: 9 Octubre 2008, 19:49 pm »

Buen trabajo, Karcrack.

Saludos.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
crear aplicaciones visuales con c
Programación C/C++
linux1 4 3,948 Último mensaje 19 Diciembre 2010, 14:56 pm
por Garfield07
Aplicaciones al inicio por consola
GNU/Linux
risto 0 1,774 Último mensaje 6 Febrero 2012, 11:02 am
por risto
Un día para crear aplicaciones financieras
Noticias
wolfbcn 0 1,626 Último mensaje 27 Octubre 2012, 01:25 am
por wolfbcn
Crear una consola por hilo.
.NET (C#, VB.NET, ASP)
SARGE553413 4 2,425 Último mensaje 12 Julio 2014, 21:16 pm
por Eleкtro
Crear Un Corazon En la consola con movimiento
Programación C/C++
ximenaferneymega 4 3,106 Último mensaje 24 Noviembre 2016, 01:12 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines