¿Cómo exactamente usando VB6 puedo llamar a cualquier comando de shell de Windows como lo haría desde la línea de comandos?¿Cómo llamo a un comando de shell de Windows usando VB6?
Por ejemplo, algo tan trivial como:
echo foo
¿Cómo exactamente usando VB6 puedo llamar a cualquier comando de shell de Windows como lo haría desde la línea de comandos?¿Cómo llamo a un comando de shell de Windows usando VB6?
Por ejemplo, algo tan trivial como:
echo foo
Así es como se hace:
Shell "cmd echo foo", vbNormalFocus
Shell y ShellExecute?
http://msdn.microsoft.com/en-us/library/aa242087.aspx
Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1) ' Run Calculator.
Siempre he usado el método Run del objeto WshShell, que está disponible después de que se hace referencia el anfitrión del modelo de objetos de Windows Script en su proyecto:
Dim shell As wshShell
Dim lngReturnCode As Long
Dim strShellCommand As String
Set shell = New wshShell
strShellCommand = "C:\Program Files\My Company\MyProg.exe " & _
"-Ffoption -Ggoption"
lngReturnCode = shell.Run(strShellCommand, vbNormalFocus, vbTrue)
Obtiene la misma funcionalidad que e la declaración de Shell normal, pero el parámetro final le permite decidir si ejecutar el programa sin shell de forma sincrónica. La llamada anterior, con vbTrue, es sincrónica. El uso de vbFalse inicia el programa de forma asincrónica.
Y, como se señaló en las respuestas anteriores, debe ejecutar el shell de comandos con el interruptor "/ c" para ejecutar comandos internos, como el "echo foo" de su pregunta. Enviarías "cmd/c echo foo" al método Run.
una combinación de todos
Shell Environ("COMSPEC") & " /c echo foo", vbNormalFocus
usted debe pensar en la expansión de variable de entorno COMSPEC si desea apoyar los sistemas anteriores como Windows 9x o Me.
También puede obtener el identificador de proceso utilizando
pid = Shell(Environ("COMSPEC") & " /c echo foo", vbNormalFocus)
Shell "cmd /c echo foo"
Sólo utilice comillas dobles: ""...""
Ejemplo - enviar pase de confirmación para realizar una tarea:
shell (""echo pass|schtasks /create /TR "C:\folder\...\program.exe" /more_parameters"")
porque los primeros "
están cerrados en "C:\...
yt la cuerda se detendría.
Ahora explico en Español
Solo usa comillas dobles: ""...""
EJEMPLO - Mando pase ONU to confirm la creacion de La tarea:
shell (""echo pass|schtasks /create /TR "C:\folder\...\program.exe" /more_parameters"")
La Causa Es Que La Primera comillas "
se cierra con las comillas de la ruta "C:\...
y se pierde la cadena Cadena.
:) Espero SIRVA y buena suerte
lngReturnCode = shell.Run (strShellCommand, vbNormalFocus, vbTrue) – nh32rg
Gracias, @ nh32rg. Fijo.Ese es un error que vivió por más de 4 años. – JeffK
Este código es para vbScript no VB6 como se lo solicitó en la pregunta. Eso puede ser muy confuso para alguien que solo conoce VB6 y busca respuestas a las preguntas de VB6. – Jeff