Hola buenas, haber si me podeis echar una mano con algo que llevo entre manos desde hace tiempo.
Lo que quiero es básicamente ejecutar un programa a través de un CMD y leer el stdout en tiempo real mientras la APP está en ejecución y a la vez ocultarlo. Hace un tiempo pregunté en el foro del AMS lo mismo y pabloko me echo una mano pero no quedó como yo quería, ya que aparte de que no se programar en ese lenguaje las opciones que me dan no son 100% válidas.
Bueno al grano, el plugin que uso para ello es el Luacom y los códigos son estos:
1:
2:
NOTA: lo que hay entre el wscript y el Exec o Run son dos puntos ":", que no se porque sale así
Bueno con uno consigo una cosa y con otro la otra pero no las dos a la vez.
El número 1 hace que pueda leer el stdout pero no me permite ocultar la ventana, se queda el cuadrado negro y feo ese...
El número 2 hacer que se pueda ocultar la fea ventana negra pero no permite leer el stdout.
Hay otra opción que es buscar la ventana y ocultarla con Window.Hide, pero sigue quedando feo ya que sale la ventana negra y después se esconde...
Una última opción que he probado es usar el :Run y direccionar la salida a un txt con "> C:\temp.txt" que funcionó perfectamente con "ping" pero casualmente los programas que quiero usar no funcionan.
El archivo de texto lo leo con:
ya que con "TextFile.ReadToString" dice que está en uso.
Haber si alguien me puede echar una mano con mi dilema...
Gracias anticipadas y saludos.
Lo que quiero es básicamente ejecutar un programa a través de un CMD y leer el stdout en tiempo real mientras la APP está en ejecución y a la vez ocultarlo. Hace un tiempo pregunté en el foro del AMS lo mismo y pabloko me echo una mano pero no quedó como yo quería, ya que aparte de que no se programar en ese lenguaje las opciones que me dan no son 100% válidas.
Bueno al grano, el plugin que uso para ello es el Luacom y los códigos son estos:
1:
wscript=luacom.CreateObject("WScript.Shell")
kall=wscript:Exec("C:\\test.cmd")
wscript=luacom.CreateObject("WScript.Shell")
kall=wscript:Run("C:\\test.cmd", 0)
Bueno con uno consigo una cosa y con otro la otra pero no las dos a la vez.
El número 1 hace que pueda leer el stdout pero no me permite ocultar la ventana, se queda el cuadrado negro y feo ese...
El número 2 hacer que se pueda ocultar la fea ventana negra pero no permite leer el stdout.
Hay otra opción que es buscar la ventana y ocultarla con Window.Hide, pero sigue quedando feo ya que sale la ventana negra y después se esconde...
Una última opción que he probado es usar el :Run y direccionar la salida a un txt con "> C:\temp.txt" que funcionó perfectamente con "ping" pero casualmente los programas que quiero usar no funcionan.
El archivo de texto lo leo con:
local f = assert(io.open("C:\\temp.txt", "r"))
local t = f:read("*all")
Haber si alguien me puede echar una mano con mi dilema...
Gracias anticipadas y saludos.