Visual Basic - Usar App.Path en la función Shell

Life is soft - evento anual de software empresarial
   
Vista:
Imágen de perfil de Edson Armando

Usar App.Path en la función Shell

Publicado por Edson Armando (10 intervenciones) el 07/01/2018 00:21:37
Lo mas que he encontrado es que la función Shell sirve para ejecutar un programa que se encuentra en el equipo y que la propiedad extra que tiene es el estilo de ventana que la aplicación, pero no hay nada al respecto del uso de variables o de la propiedad App.Path dentro de la función. La razón es que en caso de que el usuario instale la aplicación en una ruta diferente a la predeterminada, la referencia de Shell a la ruta por defecto sera invalida y arrojara un error de archivo no encontrado. Sin embargo, con la propiedad App.Path se puede evitar esto, pero no encuentro la forma de usar App.Path con Shell, siempre me arroja error. Cualquier ayuda acerca de como realizar esto seria de mucha ayuda. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana

Usar App.Path en la función Shell

Publicado por Antoni Masana (307 intervenciones) el 08/01/2018 08:09:59
Podrias poner un ejemplo del código.

Sería más fácil saber que haces mal y como corregirlo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo

Usar App.Path en la función Shell

Publicado por Andres Leonardo (1217 intervenciones) el 08/01/2018 16:09:39
concuierdo con antony debrias poner codigo ... el app.path te dara la ruta del ejecutable .. pero que quires hacer desde el shell ya que debran concatenar los datos para que los entienda el shell...

SAudos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edson Armando

Usar App.Path en la función Shell

Publicado por Edson Armando (10 intervenciones) el 09/01/2018 02:00:37
Digamos que intento hacer que un archivo que se localiza en el mismo directorio de mi aplicación se ejecute siempre que este archivo en el mismo directorio que la aplicación, no importa si ambos están en "C:\Windows" o en "C:\Archivos de programa\Aplicación"

1
2
3
4
5
6
7
8
9
10
11
12
13
Dim NoFiles As Integer
Dim B As Integer
Dim audio As String
NoFiles = ChooseWMA.FileName.ListCount
ActionDescription.Caption = "Convirtiendo:"
For B = 0 To NoFiles - 1
    audio = ChooseWMA.FileName.List(B)
    Shell ("App.Path\ffmpeg.exe -i audio audio.wma")
Next B
StartConversion.Enabled = False
ActionDescription.Caption = "Conversión terminada."
cmdNext.Enabled = True
End Sub

Lo que quiero saber es como poner App.Path en la instrucción Shell para ejecutar la instrucción desde el directorio de la aplicación
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Usar App.Path en la función Shell

Publicado por Antoni Masana (307 intervenciones) el 09/01/2018 06:51:06
Si pones la App.Path dentro de las comilla le estas diciendo al procesador de comandos que resuelva la ruta y en este caso espera encontrar desde la ruta donde esta un directorio que se llama App.Path t que contenga el ffmpeg.exe y que evidentemente no existe ni lo uno ni lo otro.

App.Path es una variable de Visual Basic y debes ponerla fuera de las comillas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SUB ...
    Dim NoFiles As Integer
    Dim B As Integer
    Dim audio As String
    NoFiles = ChooseWMA.FileName.ListCount
    ActionDescription.Caption = "Convirtiendo:"
    For B = 0 To NoFiles - 1
        audio = ChooseWMA.FileName.List(B)
        Shell (App.Path & "\ffmpeg.exe -i audio audio.wma")
    Next B
    StartConversion.Enabled = False
    ActionDescription.Caption = "Conversión terminada."
    cmdNext.Enabled = True
End Sub

Cuando algo así pasa y no se sabe que pasa una buena solución que yo utilizo y va muy bien es esta, aunque hay más formas de hacerlo pero esta es la mas grafica:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SUB ...
    Dim NoFiles As Integer
    Dim B As Integer
    Dim audio As String
    NoFiles = ChooseWMA.FileName.ListCount
    ActionDescription.Caption = "Convirtiendo:"
    For B = 0 To NoFiles - 1
        audio = ChooseWMA.FileName.List(B)
        MsgBox App.Path & "\ffmpeg.exe -i audio audio.wma"
        Shell (App.Path & "\ffmpeg.exe -i audio audio.wma")
    Next B
    StartConversion.Enabled = False
    ActionDescription.Caption = "Conversión terminada."
    cmdNext.Enabled = True
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Andres Leonardo

Usar App.Path en la función Shell

Publicado por Andres Leonardo (1217 intervenciones) el 09/01/2018 14:50:24
Lo dicho debias concatenar el app.path para que el shell lo entienda

excelente la respuesta de Anthony y la mejor manera de ver las concatenaciones poner un debug.print o un msgbox que luego ya solo lo comentas.....

Saudos
Andres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad