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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [VB.Net] Duda con Shell
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [VB.Net] Duda con Shell  (Leído 5,184 veces)
TheKillerWantsYou

Desconectado Desconectado

Mensajes: 48


MsgBox("¡Es una fieschhhta!")


Ver Perfil WWW
[VB.Net] Duda con Shell
« en: 17 Septiembre 2009, 12:42 pm »

Hola, buenos días.

Bueno, la cosa esque estoy haciendo una Interfaz Gráfica para un programa que se ejecuta por línea de comandos. El código es este:

Código
  1. Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
  2.        Button6.Text = "Mostrando información en Shell..."
  3.        Button6.Enabled = True
  4.        Shell("cmd.exe /c @echo off")
  5.        Shell("cmd.exe /c ndstool.exe -l game.nds", AppWinStyle.NormalFocus)
  6.        Shell("cmd.exe /c pause")
  7.    End Sub

Eso hace que mediante el ndstool.exe se muestre en el Shell una lista con los archivos que tiene un juego por dentro, pero cuando imprime la lista, el pause no la detiene para poder visualizarla, si no que borra la lista y pone "Pulse una tecla para continuar".
¿Hay alguna manera de hacer que pare sin que borre los datos?

Saludos.


En línea






Atrum

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: [VB.Net] Duda con Shell
« Respuesta #1 en: 17 Septiembre 2009, 16:28 pm »

Has intentado usar /k en lugar de /c como argumentos para cmd.exe?

Código:
cmd.exe /k ndstool.exe -l game.nds

Has intentado guardar la salida del comando en un archivo de texto ?

Código:
cmd.exe /c ndstool.exe -l game.nds > Salida.txt

Has intentado guardar tu secuencia de comandos en un .BAT y luego llamarlo desde tu programa?

Pero ya que estas haciendo una interfaz grafica, lo mejor seria que utilizaras la clase Process que esta en System.Diagnostics, y rediriges la salida a un RichtextBox, asi te evitarias abrir un CMD en una ventana independiente, y mostrarias los resultados del comando en tu Interfaz personalizada, si te interesa hacerlo asi, aqui te pongo un ejemplo:

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.        Dim Command As New Process 'Creamos la instancia Process
  5.        Command.StartInfo.FileName = "cmd.exe" 'El proceso en si es el CMD
  6.        Command.StartInfo.Arguments = "/c " & TextBox1.Text
  7.        'Aqui le damos los parametros /c y el nombre del archivo a ejecutar
  8.        'En tu caso sustituirias TextBox1.Text por "ndstool.exe -l game.nds"
  9.        Command.StartInfo.RedirectStandardError = True 'Redirigimos los errores
  10.        Command.StartInfo.RedirectStandardOutput = True 'Redirigimos la salida
  11.        Command.StartInfo.UseShellExecute = False
  12.        'Para redirigir la salida de este proceso esta propiedad debe ser false
  13.        Command.StartInfo.CreateNoWindow = True
  14.        'Para que no abra la ventana del CMD
  15.        Try
  16.            Command.Start()
  17.            Dim Output As String = Command.StandardOutput.ReadToEnd() _
  18.        & vbCrLf & Command.StandardError.ReadToEnd() 'Guardamos las salidas en un string
  19.            RichTextBox1.Text = Output 'Desplegamos la salida en nuestro RichTextBox
  20.        Catch ex As Exception
  21.            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
  22.            'En caso de cualquier error de ejecucion
  23.        End Try
  24.    End Sub
  25. End Class
  26.  
  27.  

Con este codigo al presionar el boton el comando escrito en el textbox es ejecutado y te muestra la salida en el RichtextBox como cuando ejecutas el comando desde el simbolo del sistema.

Notas:
El ejemplo esta probado en Visual Studio 2008
Para probar el ejemplo creamos un nuevo proyecto de aplicacion de windows VB.net y agregamos los siguientes controles

Boton con el nombre Button1
Text box con el nombre TextBox1
Rich text box con el nombre RichTextBox1


El Formulario principal tiene el nombre Form1

En si son los nombres por defecto cuando colocas los controles, pero no esta de mas ponerlo como referencia

espero algo de esto te ayude amigo


« Última modificación: 17 Septiembre 2009, 16:41 pm por Xtriker » En línea

TheKillerWantsYou

Desconectado Desconectado

Mensajes: 48


MsgBox("¡Es una fieschhhta!")


Ver Perfil WWW
Re: [VB.Net] Duda con Shell
« Respuesta #2 en: 17 Septiembre 2009, 16:44 pm »

¡Buf! Muchísimas gracias amigo, en serio, así el programa está muchísimo mejor que abriendo ventanas de comando externas.  ;D

Me reitero de nuevo, muchísimas gracias. ^_^
En línea






Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [VB.Net] Duda con Shell
« Respuesta #3 en: 17 Septiembre 2009, 16:45 pm »

El problema es que tienes los SHELL separados, entonces por cada vez que lo tienes se abre un cmd.exe diferente, intenta así:

Código
  1. Shell("cmd.exe /c @echo off & ndstool.exe -l game.nds & pause", AppWinStyle.NormalFocus)

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
TheKillerWantsYou

Desconectado Desconectado

Mensajes: 48


MsgBox("¡Es una fieschhhta!")


Ver Perfil WWW
Re: [VB.Net] Duda con Shell
« Respuesta #4 en: 17 Septiembre 2009, 17:56 pm »

Gracias tambien por la respuesta Novlucker, aunque haya usado la que me ha dicho el amigo Xtriker, esa tambien me puede ser útil para otros proyectos.  ;)
En línea






Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [VB.Net] Duda con Shell
« Respuesta #5 en: 17 Septiembre 2009, 18:02 pm »

Sin lugar a dudas la opción de Xtriker es la mejor y "más correcta", mi aclaración era simplemente para hacerte notar el error de ejecutar varios shell, ya que ejecutas un programa cada vez (en este caso el cmd.exe), y no es lo que necesitas si vas a correr varios comandos uno detras de otro  :P

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con Web-shell turca � By RcP `
Análisis y Diseño de Malware
Cleantesdeasso 2 3,047 Último mensaje 27 Julio 2013, 11:58 am
por Cleantesdeasso
Duda sobre Shell
Hacking
z3roxero 1 1,814 Último mensaje 1 Febrero 2015, 04:27 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines