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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Se puede usar un form para mostra contenido de
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Se puede usar un form para mostra contenido de  (Leído 3,243 veces)
Charlie BoT

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Se puede usar un form para mostra contenido de
« en: 28 Febrero 2016, 15:55 pm »

Saludos, vengo con una inquietud y es...

Yo tengo un archivo (.bat) que genera una ventana de dos para levantar un jar, todo eso esta bien, pero se me puso en la mente la idea de darle un poco mas de onda a eso y ver si esa ventana es posible desde un formulario mediante un textbox.

El principal problema es que nunca vi algo parecido, capas que hay miles de temas pero es que no se como buscarlo correctamente a la info.
Si fuera posible me gustaría si algún usuario del foro con experiencia me pudiera orientar un poco sobre el tema, me seria de gran ayuda!

de paso dejo el código que levanta el jar para que puedan opinar con toda la información clara.

Código:
@ECHO OFF
java -Xms64m -Xmx128m -cp .\conf;.\lib\emulinker.jar;.\lib\commons-collections-3.1.jar;.\lib\commons-configuration-1.1.jar;.\lib\commons-el.jar;.\lib\commons-lang-2.1.jar;.\lib\commons-logging.jar;.\lib\commons-pool-1.2.jar;.\lib\log4j-1.2.12.jar;.\lib\nanocontainer-1.0-beta-3.jar;.\lib\picocontainer-1.1.jar;.\lib\xstream-1.1.2.jar;.\lib\commons-codec-1.3.jar;.\lib\commons-httpclient-3.0-rc3.jar org.emulinker.kaillera.pico.PicoStarter
PAUSE

Bueno desde ya muchas gracias!


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.809



Ver Perfil
Re: Se puede usar un form para mostra contenido de
« Respuesta #1 en: 28 Febrero 2016, 17:17 pm »

No entiendo lo que pretendes hacer, ¿puedes explicarlo mejor?.

¿Quieres embedir la ventana de la CMD para que sea parte del Form?, ¿o simplemente quieres mostrar la salida de la consola en un TextBox?.

Para lo primero, y suponiendo que tu pregunta se refiera a Vb.Net y no VB6, una forma bastante atractiva sería utilizando este user-control (no es más que un RichTextBox personalizado):



Para lo segundo, puedo mostrarte un ejemplo de como hacerlo en Vb.Net, en cambio no manejo VB6, pero si tu pregunta es sobre VB6 entonces esto te servirá:

por favor, aclara a que lenguaje te refieres, ya que en este subforo ...nunca se sabe.

Saludos!


« Última modificación: 28 Febrero 2016, 17:37 pm por Eleкtro » En línea

Charlie BoT

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Se puede usar un form para mostra contenido de
« Respuesta #2 en: 28 Febrero 2016, 17:55 pm »

Si lo que quiero es mostrar la salida en un textbox dentro de un formulario... y Perdón no me di cuenta de aclarar que es para vb.NET.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.809



Ver Perfil
Re: Se puede usar un form para mostra contenido de
« Respuesta #3 en: 28 Febrero 2016, 19:26 pm »

lo que quiero es mostrar la salida en un textbox dentro de un formulario

Puedes usar el control que te mencioné, con el método Consolecontrol.StartProcess("java.exe", "argumentos...").

También puedes hacerlo de manera tradicional, aquí tienes un ejemplo detallado:

Otro ejemplo más acorde a tu situación:
Código
  1. Public NotInheritable Class Form1 : Inherits Form
  2.  
  3.    Friend WithEvents JavaProcess As Process
  4.  
  5.    ' Dim procName As String = "java.exe"
  6.    ' Dim procArgs As String = "-Xms64m -Xmx128m -cp .\conf;.\lib\emulinker.jar;.\lib\commons-collections-3.1.jar;.\lib\commons-configuration-1.1.jar;.\lib\commons-el.jar;.\lib\commons-lang-2.1.jar;.\lib\commons-logging.jar;.\lib\commons-pool-1.2.jar;.\lib\log4j-1.2.12.jar;.\lib\nanocontainer-1.0-beta-3.jar;.\lib\picocontainer-1.1.jar;.\lib\xstream-1.1.2.jar;.\lib\commons-codec-1.3.jar;.\lib\commons-httpclient-3.0-rc3.jar org.emulinker.kaillera.pico.PicoStarter"
  7.  
  8.    Dim procName As String = "cmd.exe"
  9.    Dim procArgs As String = "/C ""dir /B ""C:\Windows\system32\*"" """
  10.  
  11.    Private Sub Test() Handles MyBase.Shown
  12.  
  13.        Me.TextBox1.MaxLength = Integer.MaxValue
  14.        Me.TextBox1.Multiline = True
  15.        Me.TextBox1.ReadOnly = True
  16.        Me.TextBox1.ScrollBars = ScrollBars.Both
  17.  
  18.        Me.RunJavaConsole()
  19.  
  20.    End Sub
  21.  
  22.    Private Sub RunJavaConsole()
  23.  
  24.        Me.JavaProcess = New Process
  25.  
  26.        Me.JavaProcess.EnableRaisingEvents = True
  27.  
  28.        With Me.JavaProcess.StartInfo
  29.            .FileName = Me.procName
  30.            .Arguments = Me.procArgs
  31.            ' .WorkingDirectory = Especifica aquí el directorio de trabajo, puesto que usas rutas relativas en los argumentos.
  32.  
  33.            .UseShellExecute = False
  34.            .CreateNoWindow = True
  35.            .WindowStyle = ProcessWindowStyle.Hidden
  36.  
  37.            .RedirectStandardOutput = True
  38.            .RedirectStandardError = True
  39.        End With
  40.  
  41.        Me.JavaProcess.Start()
  42.        Me.JavaProcess.BeginOutputReadLine()
  43.        Me.JavaProcess.BeginErrorReadLine()
  44.  
  45.    End Sub
  46.  
  47.    Private Sub JavaProcess_OutputDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) _
  48.    Handles JavaProcess.OutputDataReceived
  49.  
  50.        If (e.Data IsNot Nothing) Then
  51.  
  52.            Debug.WriteLine("StdOut: " & e.Data)
  53.  
  54.            If (Me.TextBox1.InvokeRequired) Then
  55.                Me.TextBox1.Invoke(Sub() Me.TextBox1.AppendText(e.Data & Environment.NewLine))
  56.  
  57.            Else
  58.                Me.TextBox1.AppendText(e.Data)
  59.  
  60.            End If
  61.  
  62.        End If
  63.  
  64.    End Sub
  65.  
  66.    Private Sub JavaProcess_ErrorDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) _
  67.    Handles JavaProcess.ErrorDataReceived
  68.  
  69.        If (e.Data IsNot Nothing) Then
  70.  
  71.            Debug.WriteLine("StdErr: " & e.Data)
  72.  
  73.            If (Me.TextBox1.InvokeRequired) Then
  74.                Me.TextBox1.Invoke(Sub() Me.TextBox1.AppendText(e.Data & Environment.NewLine))
  75.  
  76.            Else
  77.                Me.TextBox1.AppendText(e.Data)
  78.  
  79.            End If
  80.  
  81.        End If
  82.  
  83.    End Sub
  84.  
  85.    Private Sub JavaProcess_Exited(ByVal sender As Object, ByVal e As EventArgs) _
  86.    Handles JavaProcess.Exited
  87.  
  88.        If (Me.TextBox1.InvokeRequired) Then
  89.            Me.TextBox1.Invoke(Sub() Me.TextBox1.ReadOnly = False)
  90.  
  91.        Else
  92.            Me.TextBox1.ReadOnly = False
  93.  
  94.        End If
  95.  
  96.        Me.JavaProcess.Dispose()
  97.  
  98.    End Sub
  99.  
  100. End Class

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines