Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Manejar el programa en consola "cmd"

Estas en el tema de Manejar el programa en consola "cmd" en el foro de Visual Basic clásico en Foros del Web. Busco transformar un programa hecho en VB para darle funcionalidad a traves de consola (son programas que hice hace anios en VB) O sea en ...
  #1 (permalink)  
Antiguo 20/08/2010, 06:03
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
Pregunta Manejar el programa en consola "cmd"

Busco transformar un programa hecho en VB para darle funcionalidad a traves de consola (son programas que hice hace anios en VB)

O sea en vez de estar colocando las cosas manualmente en una pantallita de windows, mandar una cadena de texto con las tareas a ejecutar.

Tambien necesito un complilador de VB y un ide lo mas simple e ilimitado en caso de que no se pueda programar en texto plano.

Programe en varios tipos de Basic y llegue hasta una version del Visual Studio, destaco que me desagrada programar usando pantallas o seleccionando check box etc, ademas tengo poco espacio asi que solo necesito algo para programar en VB y no todo el set del Visual Studio... existe algo asi o estoy obligado a descargar el Visual Studio completo??
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #2 (permalink)  
Antiguo 20/08/2010, 09:38
Avatar de buxforever  
Fecha de Ingreso: abril-2009
Ubicación: Tijuana, B.C
Mensajes: 107
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Manejar el programa en consola "cmd"

Mandar tarea a ejecutar ..suena como si quisieras hacerlo con un (BAT)

No entiendo muy bien esto: estas buscando darle funcionalidad a un programa ya hecho en vb y compilado en (EXE)

Como deseas realizar eso ..alterando los parametros del (EXE)

A lo mejor yo no entiendo bien tu idea..Pero a mi me parece eso..
  #3 (permalink)  
Antiguo 21/08/2010, 01:13
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
Respuesta: Manejar el programa en consola "cmd"

No se como explicarlo bien pero esta es la idea.

Yo trabajo en web, php y necesito hacer cosas que se hacen con programas en windows, como por ejemplo comprimir un sitio para backup, para esto ocupo funciones de php para conectarme a la consola de windows.

Osea ejecuto una linea de codigo asi
Código PHP:
$tmp exec("c:\\Image\\gm.exe convert c:\\Image\\file1.tiff c:\\Image\\file1.jpg"$results); 
que en el fondo es lo mismo que ejecutar en consola "ejecutar" o dentro de la ventana de cmd

c:\Image\gm.exe convert c:\Image\file1.tiff c:\Image\file1.jpg

entonces necesito agregarle a mi programa esa funcionalidad

c:\Image\miprograma.exe -b c:\dirx c:\dirx\backup -s -L 100

aqui le pase variable y parametros que el programa ejecutara en modo consola, si funciona en consola funcionara en php, eso es lo que quiero, que el programa funcione en consola
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #4 (permalink)  
Antiguo 21/08/2010, 05:00
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 21 años, 1 mes
Puntos: 19
Respuesta: Manejar el programa en consola "cmd"

ShellExecute busca en google


Podes mandar sentencias cmd en vb, pero no podes recibir una respuesta directa como lo estas haciendo en php. Es decir la respuesta la guardas en un txt desde cmd y luego la lees con vb. A lo que me refiero que no podes mandar por ejemplo un "DIR" y que te devuelva directamente a vb el listado, sino que tenes que pedirle que guarde los resultados en un archivo y luego lees ese archivo.
  #5 (permalink)  
Antiguo 22/08/2010, 01:57
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
Respuesta: Manejar el programa en consola "cmd"

Cita:
Iniciado por culd Ver Mensaje
ShellExecute busca en google


Podes mandar sentencias cmd en vb, pero no podes recibir una respuesta directa como lo estas haciendo en php. Es decir la respuesta la guardas en un txt desde cmd y luego la lees con vb. A lo que me refiero que no podes mandar por ejemplo un "DIR" y que te devuelva directamente a vb el listado, sino que tenes que pedirle que guarde los resultados en un archivo y luego lees ese archivo.
no quiero leer sentencias cmd dentro de vb

quiero que el vb se pueda ejecutar desde cmd

o para dejarlo mas claro quiero que mi vb solo pueda ejecutarse desde cmd y que no muestre absolutamente ninguna ventana de windows, que el programa solo responda por consola
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #6 (permalink)  
Antiguo 22/08/2010, 06:24
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 21 años, 1 mes
Puntos: 19
Respuesta: Manejar el programa en consola "cmd"

Cita:
Iniciado por Remsankar Ver Mensaje
no quiero leer sentencias cmd dentro de vb

quiero que el vb se pueda ejecutar desde cmd

o para dejarlo mas claro quiero que mi vb solo pueda ejecutarse desde cmd y que no muestre absolutamente ninguna ventana de windows, que el programa solo responda por consola
No se puede, asi de sensillo..

Para eso tenes que usar .NET y crear un proyecto de consola.
  #7 (permalink)  
Antiguo 23/08/2010, 05:11
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
Respuesta: Manejar el programa en consola "cmd"

En que te basas para decir que no se puede?
http://msdn.microsoft.com/es-es/libr...=VS.80%29.aspx aqui se habla como si se pudiera

podria ser otro lenguaje como C++ o C# la unica limitante que tengo es que debo usar unas dll que me permiten tener informacion mas detallada del sistema de archivos en windows

se programar a un nivel muy alto, lo que no tengo idea es de .net, no me interesa aprender .net ni algun lengueje especifico, solo necesito hacer algo puntual que se que se puede hacer pero no se como aun, para mi es facil de entender el codigo, pero necesito algunas ayudas para saber como, ni siquiera tengo un ide para programar en visual o en C generalmente hago todo en texto plano
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #8 (permalink)  
Antiguo 23/08/2010, 05:32
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 15 años, 1 mes
Puntos: 53
Respuesta: Manejar el programa en consola "cmd"

Hola:

No se si acabo de entender tu pregunta, te cuento lo que yo entiendo a ver si es esto. Tu deseas efectuar un programa en VB que no tenga ningun Form ni control, por ejemplo el programa se llama Prueba.exe y puedas teclear Prueba delete c:\juan\juan.jpg y supongamos que este programa lo que hace es simplemente interpretar que el primer parametro es delete, borra si existe el archivo indicado y termina.

Si esto es realmente lo que deseas, confírmalo y creo que si es posible ya que puedes iniciar un programa sin iniciar un formulario.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #9 (permalink)  
Antiguo 23/08/2010, 07:07
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 15 años, 1 mes
Puntos: 53
Respuesta: Manejar el programa en consola "cmd"

Después de releer tus preguntas, creo que efectivamente lo que yo pensaba es lo que preguntas asi que, lo único que debes hacer es esto:

1º) Inicias un nuevo Proyecto exe estándar
2º) Le agregas un módulo en blanco
3º) Quitas el Form1 ya que no lo vas a necesitar
4º) Si ahora intentas ejecutar el programa F5 verás que te da un error de que "Se necesita Formulario de Inicio o un procedimiento Sub Main"
4º) Le pegas el siguiente código que después te comento, es una simple prueba para que veas como funciona.

Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Sub Main()
  4.   Dim Parametro() As String
  5.   If Command = "" Then End
  6.   Parametro = Split(Command, " ")
  7.   Select Case LCase(Parametro(0))
  8.     Case "copiar"
  9.       Copiar Parametro(1)
  10.     Case "borrar"
  11.       Borrar Parametro(1)
  12.     Case Else
  13.       Avisar
  14.   End Select
  15. End Sub
  16.  
  17. Sub Borrar(Archivo As String)
  18.   MsgBox "Ha solicitado BORRAR " & Archivo
  19. End Sub
  20.  
  21. Sub Copiar(Archivo As String)
  22.   MsgBox "Ha solicitado COPIAR " & Archivo
  23. End Sub
  24.  
  25. Sub Avisar()
  26.   MsgBox "Ha indicado una opción incorrecta"
  27. End Sub

Como te he comentado te indica que debe haber un procedimiento Sub Main() que este es precisamente el que deberás crear. Este Main se ejecutará automaticamente sin que hagas nada mas y entonces deberás condicionar en este las necesidades de ejecucion de tus funciones e interpretar la linea CMD que le indicas.

Como ves es simple si este es tu problema, lo único que debes ir con cuidado es con los separadores e interpretación de la linea de comandos (Command) sobre todo y te lo digo por experiencia si entre los parámetros hay espacios en blanco, por ejemplo Prueba borrar c:\Archivos de Programa\Aplicacion\una foto.jpg ya que aqui te puedes armar un buen lio con la interpretación de la linea puesto que en este ejemplo los valores devueltos serían:

Parametro(0) = borrar
Parametro(1) = c:\Archivos
Parametro(2) = de
Parametro(3) = Programa\Aplicacion\una
Parametro(4) = foto.jpg

Pero no te preocupes todo esto tiene solución, por alguna parte creo recordar tengo una función que devuelve correctamente los parámetros, me pongo a buscarla por si la necesitas.

Un saludo
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #10 (permalink)  
Antiguo 23/08/2010, 12:40
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
De acuerdo Respuesta: Manejar el programa en consola "cmd"

Gracias!!! algo asi buscaba, ahora ya encontre un visual basic free, y me pongo a penas lo descarge a hacer las modificaciones :P
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #11 (permalink)  
Antiguo 23/08/2010, 12:49
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 15 años, 1 mes
Puntos: 53
Respuesta: Manejar el programa en consola "cmd"

Hola, como era eso lo que buscabas, por si acaso aqui va lo prometido, esta función puedes utilizarla para recuperar todos los Parametros del Command.

Código vb:
Ver original
  1. Private Function SeparaCommand(ByVal Cadena As String) As String()
  2.   Dim Parametros As String, Hasta As Integer
  3.   ' Elimina posibles caracteres blancos al principio y final
  4.  Cadena = Trim(Cadena)
  5.   Do While Cadena <> ""
  6.     If Left$(Cadena, 1) = Chr$(34) Then
  7.       ' Si primer caracter es Comillas, busca las siguientes Comillas
  8.      Hasta = InStr(Mid$(Cadena, 2), Chr$(34))
  9.       Parametros = Parametros & Mid$(Cadena, 2, Hasta - 1) & "|"
  10.       Cadena = Trim(Mid$(Cadena, Hasta + 2))
  11.     Else
  12.       ' Si primer caracter no es comillas, busca el primer blanco
  13.      Hasta = InStr(Cadena & Chr$(32), Chr$(32))
  14.       Parametros = Parametros & Left$(Cadena, Hasta - 1) & "|"
  15.       Cadena = Trim$(Mid$(Cadena, Hasta + 1))
  16.     End If
  17.   Loop
  18.   ' Quita el último separador | que no va a necesitar
  19.  If Parametros <> "" Then Parametros = Left$(Parametros, Len(Parametros) - 1)
  20.   SeparaCommand = Split(Parametros, "|")
  21. End Function

Como ves el uso de la misma es muy simple:

Dim Prm() As String
Prm = SeparaCommand(Command$)


Esta probada y 'teoricamente funciona' pero como siempre, se aceptan cambios y posibles mejoras.

De todos modos, por aqui andaré cualquier duda al respecto comenta.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #12 (permalink)  
Antiguo 24/08/2010, 00:44
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
Respuesta: Manejar el programa en consola "cmd"

gracias excelente aporte!!

tengo unos problemas horribles para instalar el visual studio express 2008, despeus de intentar de varias maneras descubri que simplemente no puedo instalar el net framework 3.5 falla constantemente, tengo xp mediacenter sp3 windows es original, desinstale el net framework 1.0 y 2.0 y nada estoy probando con el .net fw 4.0 pero fallo, tienes alguna pista sobre como solucionar esto mi laptop?
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #13 (permalink)  
Antiguo 24/08/2010, 01:41
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 15 años, 1 mes
Puntos: 53
Respuesta: Manejar el programa en consola "cmd"

Respecto al problema que tienes, lo siento pero no tengo ni idea. Por otra parte aunque imagino que en visual studio express 2008 esto que te he indicado debería funcionar así o de manera muy similar, tampoco sabría decirte, lo mio es VB 6

Un saludo
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #14 (permalink)  
Antiguo 24/08/2010, 03:20
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
Respuesta: Manejar el programa en consola "cmd"

Cita:
Iniciado por erbuson Ver Mensaje
Respecto al problema que tienes, lo siento pero no tengo ni idea. Por otra parte aunque imagino que en visual studio express 2008 esto que te he indicado debería funcionar así o de manera muy similar, tampoco sabría decirte, lo mio es VB 6

Un saludo
y sabes donde podria descargar el ese ide estube buscando versiones antiguas pero no encontre, y prefiero ocupar versioens antiguas por que son mas estables y las dll ya estan en todos lso sistemas
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #15 (permalink)  
Antiguo 24/08/2010, 07:08
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 21 años, 1 mes
Puntos: 19
Respuesta: Manejar el programa en consola "cmd"

Que bruto este chico.

1º Sobre el problema en la instalacion de VS 2008, es por que tenes instalado el Office, lo cual lleva instalado un componente que desea instalar VS 2008, por ende, desinstala completamente el Office y instala el VS 2008 y luego nuevamente el Office.

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

2º Una cosa es un programa de consola, y otra cosa es un programa que recibe un parametro de entrada y responde a la peticion.

Si lo que vos queres es un programa en CONSOLA... ¿que seria un programa en consola?
Que vos ejecutas y se habre una ventana de MSDOS y te excribe opciones y vas ingresando y respondiendo lo que el programa te pregunta directamente por MSDOS... ENTONCES ESO NO VAS A PODER HACER CON VISUAL BASIC 6.0 ni anteriores... Pero si con Visual Basic .NET (mira bien este subforo es para contestar respuestas de vb 6.0 y anteriores, para .NET tenes otro subforo).

Ahora, si vos lo que queres es al ejecutar mandar un parametro al programa y que realice una accion (pero nunca se vea ninguna ventana, nisiquiera la de MSDOS) entonces eso si se puede con Visual Basic 6.0 (y obviamente tambien con .NET). Simplemente creando un proyecto con un Sub Main y rescatando el Command con los parametros de entrada.

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

3º Repito, para problemas con .NET aca no se te puede responder por que es otro subforo...

Cualquier duda y/o consulta con respecto a VB 6.0 tenes que hacerla lo mas RACIONAL Y ENTENDIBLE posible. Incluyendo ejemplos

Gracias
  #16 (permalink)  
Antiguo 24/08/2010, 10:02
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
Respuesta: Manejar el programa en consola "cmd"

Bueno resolvi los problemas de instalacion del visual basic express 2008 , que eran por el netframework, me arme de paciencia y elimine todos los registros y todos los archivos utilizando primero los desintaladores, luego ccleaner, regcleaner y unlocker para eliminar algunas dll y carpetas dentro de windows y system 32, al reinicar vuala paso el fw 3.5 pero claro que eso fue por que no encontraba el vb antiguo, pero al final lo encontre!!! una version portable que puede generar exe y que ademas solo pesa 7 mb :D

ahora estoy haciendo una prueba con un programa chico para darle funcionalidad por consola, luego posteo el codigo por que es libre!!
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #17 (permalink)  
Antiguo 24/08/2010, 10:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Respuesta: Manejar el programa en consola "cmd"

Aquí muestra una forma de convertir la aplicación hecha con Visual Basic 6 a una aplicación de consola modificando la cabecera PE del archivo:
http://www.coders.me/general/escribi...visual-basic-6

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #18 (permalink)  
Antiguo 24/08/2010, 10:31
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
Respuesta: Manejar el programa en consola "cmd"

Gracias por la ayuda Erbuson y David!!

el ejemplo de Erbuson me ha servido a la perfeccion salvo por el msgbox que necesita hacerle click, voy a tratar de integrar de una manera simple lo que aparece en el link que me ha dado David para que en vez de devolver el mensaje en un box lo devuelva por consola, una vez hecho me lanzo al programa facil para ver como lo integro y al programa mas complejo despues que lo hice cuando no tenia idea de programacion ordenada y el codigo esta bien feo y con muchos bugs xD

Gracias por la ayuda
y bueno la antiayuda igual ha servido aunque no me gusta para nada eso de tratar de bruto sin razon
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #19 (permalink)  
Antiguo 24/08/2010, 14:02
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
Respuesta: Manejar el programa en consola "cmd"

Yupi me costo manejar algunas cosas pero ya me funciono el ejemplo que dio David

el winhex ya no es gratis y me parece un poco complicado, al final se puede hacer con el ultraedit 32 (que ocupo para programar todo, pero no es gratis) o con el Notepad++ ese si es gratis que son editores avanzados de texto o codigo pero muy livianos

el PEedit me ensucio el exe a pesar de mostrarme la opcion subsystem de una manera mas simple, seguramente algo hice mal pero me dio algunos lios asi que solo ocupe el PEview y el Ultraedit

El proyecto de del PEview de souce forge no hay archivos asi que tuve que buscar el archivo en varios sitios y este es el correcto
http://www.magma.ca/~wjr/PEview.zip

El PEedit
http://www.softpedia.com/progDownloa...wnload-28.html

Aqui hice algo por error que me resulto excelente
en el setup.exe que viene en el PEedit por error escogi el archivo PEview.exe y luego marque que agrege al menu contextual para archivos ejecutables, entonces ahora cuando hago click derecho sobre mi .exe creado en VB6 puedo escoger PEedit y me abre el PEview, busco el valor subsystem y luego en el mismo menu contextual lo abro y edito con el ultraedit, me resulta comodisimo para los tests!

Ya me funciona la salida en Consola, comente este paso intermedio por que fue un poco confuso conseguir los programas de la pagina citada por David
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #20 (permalink)  
Antiguo 24/08/2010, 15:09
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
De acuerdo Respuesta: Manejar el programa en consola "cmd"

Código PHP:
Option Explicit
Private Const STD_OUTPUT_HANDLE = -11&
Dim hConsoleOut As Long
Dim sTexto 
As String
Dim lWritten 
As Long
Private Declare Function FreeConsole Lib "kernel32" () As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) 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 LonglpBuffer As AnyByVal nNumberOfCharsToWrite As LonglpNumberOfCharsWritten As LonglpReserved As Any) As Long
Private Declare Function SetConsoleTextAttribute Lib "kernel32" (ByVal hConsoleOutput As LongByVal wAttributes As Long) As Long
Private Declare Function SetConsoleTitle Lib "kernel32" Alias "SetConsoleTitleA" (ByVal lpConsoleTitle As String) As Long

Private Sub Form_Load()
Form1.Hide ' Ocultamos el formulario
    hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE) ' 
Obtenemos el handle de la consola
    Dim Parametro
() As String
    
If Command "" Then End
    Parametro 
Split(Command" ")
    
Select Case LCase(Parametro(0))
        Case 
"copiar"
    
Copiar Parametro(1)
        Case 
"borrar"
    
Borrar Parametro(1)
        Case Else
    
Avisar
    End Select
End Sub

Sub killme
()
    
CloseHandle hConsoleOut
    FreeConsole
    End 
' fin de ejecución
End Sub
 
 
Sub Borrar(Archivo As String)
    '
MsgBox "Ha solicitado BORRAR " Archivo
    hConsoleOut 
GetStdHandle(STD_OUTPUT_HANDLE)
    
sTexto "Ha solicitado BORRAR " Archivo  ' Texto a mostrar en la consola
    WriteConsole hConsoleOut, ByVal sTexto, Len(sTexto), lWritten, ByVal 0&   ' 
Mostramos el texto en la consola
    killme
End Sub
 
Sub Copiar
(Archivo As String)
    
'MsgBox "Ha solicitado COPIAR " & Archivo
    hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE)
    sTexto = "Ha solicitado COPIAR " & Archivo  ' 
Texto a mostrar en la consola
    WriteConsole hConsoleOut
ByVal sTextoLen(sTexto), lWrittenByVal 0&   ' Mostramos el texto en la consola
    killme
End Sub
 
Sub Avisar()
    '
MsgBox "Ha indicado una opción incorrecta"
    
hConsoleOut GetStdHandle(STD_OUTPUT_HANDLE)
    
sTexto "Ha indicado una opción incorrecta"  ' Texto a mostrar en la consola
    WriteConsole hConsoleOut, ByVal sTexto, Len(sTexto), lWritten, ByVal 0&   ' 
Mostramos el texto en la consola
    killme
End Sub 
al exportar el exe solo queda cambiar el hexadecimal 114 de 02 a 03 con cualquier editor hexadecimal

el vb6 portable lo puedes descargar de aqui 6mb!!

el test esta funcionando!!! no sirve de nada pero xD pero es un buen ejemplo para jugar!!

no se como poner la etiqueta de vb :P
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/
  #21 (permalink)  
Antiguo 25/08/2010, 09:50
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 15 años, 1 mes
Puntos: 53
Respuesta: Manejar el programa en consola "cmd"

Hola:

Casualmente, y porque la curiosidad mato al gato, he encontrado este enlace en Recursos Visual Basic que permite crear una aplicacion de Consola desde VB así que como viene siendo costrumbre, por si alguien mas está interesado aqui lo dejo Consola DOS desde Visual Basic

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #22 (permalink)  
Antiguo 29/08/2010, 11:19
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años, 1 mes
Puntos: 4
Respuesta: Manejar el programa en consola "cmd"

buscando otra cosa encontre tambien de casualidad esto

http://www.nirsoft.net/vb/console_ap...ual_basic.html

bueno lo que estoy haciendo ahora es replicar algunas cosas del comando touch de linux a windows, tengo unos problemas absurdos de tipos y matrices, como no tengo un manual con ejemplos de visual basic es lento estar probando los comos, quizas podria bajar ese libro, yo me lo compre pero lo deje en la casa de mi mama a unos 14 o 16mil kilometros de aqui xD

Código vb:
Ver original
  1. 'Attribute VB_Name = "Module1"
  2. Option Explicit
  3. Private Declare Function FreeConsole Lib "kernel32" () As Long
  4. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  5. Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
  6. Private Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, lpReserved As Any) As Long
  7. Private Declare Function SetConsoleTextAttribute Lib "kernel32" (ByVal hConsoleOutput As Long, ByVal wAttributes As Long) As Long
  8. Private Declare Function SetConsoleTitle Lib "kernel32" Alias "SetConsoleTitleA" (ByVal lpConsoleTitle As String) As Long
  9. Private Const STD_OUTPUT_HANDLE = -11&
  10.  
  11.  
  12.  
  13. Sub Main()
  14.   Dim Parametro() As String
  15.   If Command = "" Then End
  16.   Parametro = Split(Command, " ")
  17.   Select Case LCase(Parametro(0))
  18.     Case "copiar"
  19.       Copiar Parametro(1)
  20.     Case "borrar"
  21.       Borrar Parametro(1)
  22.     Case Else
  23.       Avisar
  24.   End Select
  25. End Sub
  26.  
  27. Sub Borrar(Archivo As String)
  28.   ConsoleMsg "Ha solicitado BORRAR " & Archivo
  29. End Sub
  30.  
  31. Sub Copiar(Archivo As String)
  32.   ConsoleMsg "Ha solicitado COPIAR " & Archivo
  33. End Sub
  34.  
  35. Sub Avisar()
  36.   ConsoleMsg "Ha indicado una opción incorrecta"
  37. End Sub
  38.  
  39. Private Sub ConsoleMsg(ConsoleTxt As String)
  40.     Dim hConsoleOut As Long
  41.     hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE) ' Obtenemos el handle de la consola
  42.    If (hConsoleOut) Then
  43.         Dim lWritten As Long
  44.         SetConsoleTitle ("Touch")
  45.         WriteConsole hConsoleOut, ByVal ConsoleTxt, Len(ConsoleTxt), lWritten, ByVal 0&   ' Mostramos el texto en la consola
  46.    End If
  47.     'Matamos la consola
  48.  
  49.     CloseHandle hConsoleOut
  50.     FreeConsole
  51.     End ' fin de ejecución
  52. End Sub

Este es nuevamente una mezcla con el codigo mas legible te puede ser util Erbuson

Recuerda que al exportar el exe solo tienes que cambiar el hexadecimal 114 de 02 a 03 con cualquier editor hexadecimal, el valos es un 02 entre 100 y 130 es facil de encontrar por que hay casi puros 00 al rededor

Saludos y gracias por ayudarme
__________________
Ayuda!! firmar y compartir
No a la privatizacion de semillas http://www.thepetitionsite.com/1/no-...n-de-semillas/
Mas info: http://chilesintransgenicos.cl/

Etiquetas: consola, manejar, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:41.