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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Recibir comandos en el formulario por línea de comando
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Recibir comandos en el formulario por línea de comando  (Leído 1,852 veces)
Crazy.sx


Desconectado Desconectado

Mensajes: 447



Ver Perfil
Recibir comandos en el formulario por línea de comando
« en: 29 Julio 2013, 07:04 am »

Bueno, estaba viendo algo sobre argumentos y probé que usando una variable tipo string y con command() puedo recibir comandos desde otro formulario o por consola.

En el proyecto tengo algo simple como esto:

Código
  1.        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.        Dim comando As String
  3.        comando = Command()
  4.  
  5.        If comando = "prueba1" Then msgbox("Se recibió palabra PRUEBA1")
  6.        If comando = "prueba2" Then msgbox("Se recibió palabra PRUEBA2")
  7.    End Sub

Y haciendo desde consola:

Citar
aplicacion.exe prueba1
aplicacion.exe prueba2

¡Funciona!. El tema es que se abre un proceso para cada vez que le paso los argumentos.

Yo quisera hacer que, la aplicación, mientras esté siendo ejecutada reciba los comandos o argumentos que le esté enviando las veces que quiera sin que tenga que cerrarse y volverse a abrir.

He intentado poner la función en otros eventos del formulario pero no he conseguido hacer que funcione, siempre termina ejecutándose otro proceso diferente.

Hasta he probado hacer que mi aplicación sea de instancia única, pero tampoco.

Espero que se haya entendido y espero que me puedan ayudar en este problema que tengo.

Saludos.


En línea

Destruir K. LOL
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Re: Recibir comandos en el formulario por línea de comando
« Respuesta #1 en: 29 Julio 2013, 07:39 am »

Lo que tienes que hacer es detectar si ya hay otra instancia de tu aplicacion y comunicarte con ella para pasarle los datos. Hay varias formas, sockets, sendmessage, etc

Enviado desde mi LG-E612g


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: Recibir comandos en el formulario por línea de comando
« Respuesta #2 en: 29 Julio 2013, 19:56 pm »

Los argumentos los puedes encontrar almacenados aquí: My.Application.CommandLineArgs

Ejemplo:
Código
  1.    ' Loop through all the command line arguments given.
  2.    For I As Integer = 0 To My.Application.CommandLineArgs.Count - 1
  3.        ' If an argument equals "/m"
  4.        If My.Application.CommandLineArgs.Item(I).ToLower = "/m" Then
  5.            MsgBox("You have used /m")
  6.        Else ' If it doesn't equal "/m"
  7.            MsgBox("Incorrect CMD Argument.")
  8.        End If
  9.    Next

Si estás usando un WinForm y quieres recibir argumentos puedes hacer dos cosas:
1. Setear el proyecto como "ConsoleApp", lo cual adjuntará una molesta ventana del a CMD cada vez que inicies tu app.
2. Adjuntar una instancia de la consola manualmente si tu proyecto es llamado desde la CMD.

Código
  1.    Declare Function AttachConsole Lib "kernel32.dll" (ByVal dwProcessId As Int32) As Boolean
  2.    Declare Function FreeConsole Lib "kernel32.dll" () As Boolean
  3.  
  4.    AttachConsole(-1) ' Attach the console
  5.    System.Console.Writeline("I am writing from a WinForm to the console!")
  6.    FreeConsole() ' Desattach the console

Para saber si tu aplicación se ha llamado desde la consola puedes hacer esto:

Código
  1. #Region " App Is Launched From CMD? "
  2.  
  3.    ' [ App Is Launched From CMD? Function ]
  4.    '
  5.    ' // By Elektro H@cker
  6.    '
  7.    ' Examples:
  8.    ' MsgBox(App_Is_Launched_From_CMD)
  9.    ' If App_Is_Launched_From_CMD() Then Console.WriteLine("Help for this application: ...")
  10.  
  11.    Declare Function AttachConsole Lib "kernel32.dll" (ByVal dwProcessId As Int32) As Boolean
  12.    Declare Function FreeConsole Lib "kernel32.dll" () As Boolean
  13.  
  14.    Private Function App_Is_Launched_From_CMD() As Boolean
  15.        If AttachConsole(-1) Then
  16.            FreeConsole()
  17.            Return True
  18.        Else
  19.            Return False
  20.        End If
  21.    End Function
  22.  
  23. #End Region

Saludos...
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar get en linea de comandos
PHP
XafiloX 2 2,857 Último mensaje 29 Septiembre 2009, 21:10 pm
por XafiloX
Problema al recibir POST de formulario PHP
PHP
Carlosnuel 3 2,881 Último mensaje 16 Noviembre 2009, 23:35 pm
por Carlosnuel
En el principio era la linea de comandos
GNU/Linux
monos1 1 1,780 Último mensaje 24 Diciembre 2011, 10:24 am
por peib0l
ejecutar linea de comando en .bat
Scripting
narvaezmv 1 1,841 Último mensaje 29 Junio 2017, 13:19 pm
por Eleкtro
Recibir datos de un formulario, almacenarlos en un script python y manipularlos
Scripting
xEus 0 461 Último mensaje 29 Marzo 2019, 07:28 am
por xEus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines