Queremos regalarte la mejor información que encontramos en internet. Nosotros queremos que te resulte útil y si quieres aportar algo que nos pueda ayudar a crecer hazlo libremente.
Solución:
Tal vez no tenga este control ActiveX instalado (o registrado) en su computadora.
WScript.Shell
debe encontrarse en cada Windows:
var run=new ActiveXObject('WSCRIPT.Shell').Run("commands to run");
Si hay espacios en commands to run
debe usar comillas dobles.
Editar
El contenido a continuación proviene principalmente de MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx
iRetVal = Shell.ShellExecute(
sFile,
[ vArguments ],
[ vDirectory ],
[ vOperation ],
[ vShow ]
)
Echemos [vDirectory]
. La documentación dice: “El totalmente calificado path of the directory
que contiene el archivo especificado por sFile. Si no se especifica este parámetro, se utiliza el directorio de trabajo actual”.
Esto significa que tiene una ruta no válida para este argumento (que tiene .cmd.exe
al final de la misma). Además, todos los ejemplos para crear ActiveX son así:
var objShell = new ActiveXObject("shell.application");
Observe las minúsculas en "shell.application"
.
Y May12, gracias por preguntar esto. No conocía antes este control ActiveX, me parece muy útil.
EDITAR II
¿Pero lo has entendido? Tu ejemplo funciona perfecto en mi aplicación:
objShell.ShellExecute("cmd.exe", "cd C: C:\cd c:\ext_file main.exe test.txt", "C:\WINDOWS\system32", "open", 1);
Con tres excepciones:
1) El que mencioné al principio de esta respuesta sobre el camino
2) Escapó usado también en argumentos.
3) El último argumento es tipo de número, no un string.
Sección de Reseñas y Valoraciones
Al final de todo puedes encontrar las crónicas de otros desarrolladores, tú todavía puedes mostrar el tuyo si te gusta.