border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

  #1 (permalink)  
Antiguo 02-03-2005, 08:04:47
Avatar de mensazen
Usuario VIP del Foro
 
Registrado: jul 2004
Ubicación: Barcelona
Posts: 653
mensazen Valoración +2
Predeterminado Captura de argumentos shell

Hola, a ver si consigo explicarme.
Tengo una aplicación de actualización de ejecutables, dll's y bases de datos. El problema es que tengo una aplicación de actualización para cada programa.

Lo que quiero es tener una sola aplicación de actualización para todos los programas y para eso necesito pasarle parámetros/argumentos. Buscando la instrucció 'shell' conseguí pasar un parámetro y recibirlo en el programa de actualización, perfecto, pero mi pregunta es:

Si paso mas de una parámetro (tres o cuatro) ¿Cómo los identifico en el programa que los recibe?. Hasta ahora hacia strVariable= Command y 'Command' tenía el parámetro, pero si son tres ¿cómo lo hago?.

Siento si es una pregunta muy simple pero en la ayuda de Vb y en el Google no he sabido encontrarlo.

Gracias por todo
José Antonio
Responder Con Cita
  #2 (permalink)  
Antiguo 02-03-2005, 10:51:42
Buena Participación en el Foro
 
Registrado: ene 2005
Posts: 45
taddevil Valoración +2
Contactar con taddevil a través de MSN
Predeterminado

Mucha experiencia no tengo, pero lo que si te puedo decir que en COMMAND te viene un string que vos podes desarmar y luego podes usar cada una de las opciones.

a ver si me explico:
Código:
Public Function Command2Arg() As Integer
    On Error GoTo TratarError
    'Devuelve lo que hay en command$ o en la variable de entrada
    'en un array global Argv() y devuelve el número de parámetros
    'o cero si no hay ninguno
    '-------------------------------------------------------------
    Dim c As String
    Dim sTmp As String
    Dim i As Integer
    Dim Separadores As String
    
    Separadores = "/ " & Chr$(34) & Chr$(9)
    
    ReDim argv(0)
    argc = 0
    sCommand = Trim$(CStr(Command$))
    'Si no tiene nada la variable devolver cero
    If (Len(sCommand) = 0) Then
        Command2Arg = 0
        argc = 0
        MsgBox "Argumentos no validos" & vbCrLf & "Avisar a Sistemas", vbCritical, "Error"
        Exit Function
    End If
    i = 0
    Do While i < Len(sCommand)
        i = i + 1
        c = Mid$(sCommand, i, 1)
        If c = Chr$(34) Then
            sTmp = ""
            Do While i < Len(sCommand)
                i = i + 1
                c = Mid$(sCommand, i, 1)
                If c = Chr$(34) Then Exit Do
                sTmp = sTmp & c
            Loop
            argc = argc + 1
            ReDim Preserve argv(argc)
            argv(argc) = Trim$(sTmp)
            sTmp = ""
        ElseIf c = "/" Or c <> " " Then
            sTmp = c
            Do While i < Len(sCommand)
                i = i + 1
                c = Mid$(sCommand, i, 1)
                If InStr(Separadores, c) Then
                    i = i - 1
                    Exit Do
                End If
                sTmp = sTmp & c
            Loop
            argc = argc + 1
            ReDim Preserve argv(argc)
            argv(argc) = Trim$(sTmp)
            sTmp = ""
        End If
    Loop
    Command2Arg = argc
    'Open "\datos\sendmail.LOG" For Append As #1
    'Write #1, Now(), Environ("USUARIO"), sCommand
    'Close #1
    Exit Function
TratarError:
   Open "\datos\sendmail.err" For Append As #1
   Write #1, Now(), Environ("USUARIO"), Err.Number, Err.Description, Err.Source, "LINEA DE COMANDOS", sCommand
   Close #1
   MsgBox "Error:" & Err.Number & " " & Err.Description & vbCr & "           Avisar a Sistemas", vbCritical, "Error en la Aplicacion"
End Function
espero te sirva
__________________
Marcelo .:: Rks ::.
Responder Con Cita
  #3 (permalink)  
Antiguo 02-03-2005, 10:55:39
Avatar de nonnato
Gran Participación en el Foro
 
Registrado: abr 2004
Ubicación: Santander (Cantabria)
Posts: 376
nonnato Valoración +2
Predeterminado

lo que a mi se me ocurre es enviar los parametros separados por un caracter que no vayas a utilizar en ningun parametro, esto es, por ejemplo "," y luego puedes manejarlo partiendo la cadena en un array de string

Código:
dim strVariable() as string
strVariable=split(Command,",")
 ' esto t parte la cadena en donde encuentre caracter ,
Ahora tienes cargado el array strVariable con todos los parametros, donde cada posicion corresponde. Por otro lado, se me ocurre que lo mismo Command ya es un array en si... ¿has probado command(2) por ejemplo a ver si te da algo? me refiero cuando usas varios parametros logiacamente.
__________________
Mi programuca te lo regalo, la ideuca te la vendo
Responder Con Cita
  #4 (permalink)  
Antiguo 03-03-2005, 07:57:10
Avatar de mensazen
Usuario VIP del Foro
 
Registrado: jul 2004
Ubicación: Barcelona
Posts: 653
mensazen Valoración +2
Predeterminado

Muchas gracias a los dos, creo que con esto podré solucionar el problema, pensaba que habría otra manera pero veo que se tiene que hacer manualmente.
Repito muchas gracias
José Antonio
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
argumentos para una aplicacion VB.net Filupa Visual Basic.NET 2003 & 2005 1 03-02-2008 11:11:46
Captura de video zepjau Visual Basic 3.00 Embedded 0 21-01-2007 10:44:35
Captura eventos josmar ASP 0 20-11-2006 20:08:43
argumentos de linea de comando eacevedof Visual Basic 6.00 3 16-03-2005 16:19:09
Dudas sobre Captura de imagen de una webcam bajo interfaz de ariana3181 Visual Basic 6.00 1 20-03-1970 22:15:56


La franja horaria es GMT. Ahora son las 06:48:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right