USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
maurox
Mensajes: 8
Registrado: 15 Feb 2009, 20:34

USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.

Mensaje por maurox »

Saludos a todos.
Debo presentarme primero, soy Mauro de Panamá.
Desde hace un tiempo he venido escuchando sobre la potencia de autoit para hacer esto y akello y deseo examinar su potencial.

Kisiera generar un pekeño programa ke me permita hacer esto.
Llamar a la consola CMD del windos, MS-DOS, y através de un formulario introducir comandos y resivir los resultados en el mismo formulario.

El formlario constaría de una caja de texto para entrar los comandos, un cuadro de texto (estilo textarea) para hacer el output de la pantalla de ms-dos, un botón para un comando de limpieza CLS y otro botón para cerrar el programa.

Akí viene lo interesante, soy ciego, utilizo lectores de pantalla para accesar al entorno de windows, lametablemente el koda es inaccesible para mí, debo crear mis formularios a la antigua, calculando y midiendoo, precisamente creo ke un ejercicio así sería genial para practicar la creación de formularios y scripts sencillos.

Podrían mostrarme códigos ke hagan cosas similares a las ke deseo para poder arrancar de algún lado?
Muchas gracias.
Avatar de Usuario
Rupert.25
Hacker del Foro
Mensajes: 247
Registrado: 17 Jul 2007, 18:27

Re: USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.

Mensaje por Rupert.25 »

Hola Maurox. No se si lo que quieras es que te hagamos el programa, eso sin duda requerirá tiempo, pero si lo que necesitas es una guia te voy a dar un panorama de lo que necesitas hacer.

Existe el comando RUN con el cual puedes ejecutar la consola de windows, y la direccion del ejecutable de dicha consola te la devuelve la macro @ComSpec, por lo tanto tu comando completo seria:

Run(@ComSpec & " /c Aqui tu comando (despues del parametro /c)")

Eso lo puedes almacenar en una variable, te dara el ID del proceso. Te quedaria asi.

IDProceso = Run(@ComSpec & " /c Aqui tu comando (despues del parametro /c)")

Despues de eso puedes usar el comando StdOutRead, con el cual podrás leer, desde la meria lo que devuelve la consola!

Recuerda que los unicos limites, son los personales.

Espero haberte ayudado! Si te surgen mas dudas o si no entiendes en lo absoluto comentalo y te ayudaremos!
maurox
Mensajes: 8
Registrado: 15 Feb 2009, 20:34

Re: USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.

Mensaje por maurox »

Saludos, esta es mas o menos mi primera prueba para realizar el script ke deseo, pero, lamentablemente no opera.
estoy usando una función de run para llamar a la consola MS-DOS y una función stdouterad para leer la salida de dicha consola, o por lo menos eso debería hacer.
A ver si me pueden decir mas o menos ke estoy haciendo mal.
Muchas gracias.
El código:

Ÿ̕Ÿ̕lude <GUIConstantsEx.au3>

GUICreate("Pantalla de línea de comandos", 300, 300)
;GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
$boton_cerrar = GUICtrlCreateButton("Cerrar", 30, 280, 60)

$boton_cls = GUICtrlCreateButton("CLS", 100, 280, 60)

$boton_get = GUICtrlCreateButton("Get", 30, 80, 60)

$input_edit = GUICtrlCreateEdit("Comandos de entrada:", 30, 30)

$output_edit = GUICtrlCreateEdit("Salida de comandos", 30, 50, 250, 210)

GUISetState(@SW_SHOW)


While 1

$msg1 = GUIGetMsg()

Select

Case $msg1 = $boton_get

$entrada = GUICtrlRead($input_edit)
$com = Run(@ComSpec & "/c" & $ENTRADA)
$salida = StdOutRead($com, true)

GUICtrlSetData($output_edit, $salida)


MsgBox(0, "Texto ingresado", $salida)


Case $msg1 = $boton_cerrar

MsgBox(0, "Eventos de ventana", "Has presionado salir!")
ExitLoop

Case $msg1 = $GUI_EVENT_CLOSE
MsgBox(0, "Eventos de ventana", "Has presionado salir!")
ExitLoop
EndSelect

wend
Avatar de Usuario
Rupert.25
Hacker del Foro
Mensajes: 247
Registrado: 17 Jul 2007, 18:27

Re: USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.

Mensaje por Rupert.25 »

Hola mauroX, he modificado un poco tu codigo, y he solucionado el problema.

En un principio no entendia, cual era el problema, pero te faltaban algunos parametros para el comando RUN, y ademas tienes que leer varias veces la respuesta de la ejecución, para eso he pueto el while.

aqui te dejo el codigo:

Código: Seleccionar todo

#include<GUIConstantsEx.au3>
#include <Constants.au3>
GUICreate("Pantalla de línea de comandos", 300, 300)
$boton_cerrar = GUICtrlCreateButton("Cerrar", 30, 280, 60)
$boton_cls = GUICtrlCreateButton("CLS", 100, 280, 60)
$boton_get = GUICtrlCreateButton("Get", 230, 80, 60)
$input_edit = GUICtrlCreateEdit("Comandos de entrada:", 30, 10,200,100)
$output_edit = GUICtrlCreateEdit("Salida de comandos", 30, 120, 250, 150)

GUISetState(@SW_SHOW)

While 1
	$msg1 = GUIGetMsg()
		Select

			Case $msg1 = $boton_get

				$entrada = GUICtrlRead($input_edit)
				$com = Run(@ComSpec & " /c " & $entrada,@SystemDir,@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
				While 1
					$salida = StdoutRead($com)
					If @error Then ExitLoop
					if Not $salida = "" Then 
						;MsgBox(0, "STDOUT read:", $Salida)
						GUICtrlSetData($output_edit, $salida & @CRLF)
					EndIf
				Wend
				
			Case $msg1 = $boton_cerrar
				MsgBox(0, "Eventos de ventana", "Has presionado salir!")
				ExitLoop

			Case $msg1 = $GUI_EVENT_CLOSE
				MsgBox(0, "Eventos de ventana", "Has presionado salir!")
				ExitLoop
		EndSelect
wend
por cierto te he midificado un poquito la GUI de tu programa, pues estaba algo descuadrada jeje. espero haberte ayudado.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.

Mensaje por Chefito »

Puede que este editor de codigo bacth te interese. Se hizo hace meses, pero tiene una lista con los ficheros comandos donde te muestra la ayuda en un control edit.
Se trata del Bast Bacth ED by Fhaker: http://www.emesn.com/autoitforum/viewto ... f=4&t=1061
Está realizado con una versión anterior de autoit. Para que funcione la función _IsPressed tienes que añadirle al principio la librería Misc: #Include <Misc.au3> .

Espero que te sirva de algo.
Hay más información en el foro sobre estos temas. Si tienes problemas para buscarlos dinoslo y estaremos encantados de ayudarte.

Saludos :smt003 .
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Responder