Página 1 de 1
USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.
Publicado: 19 Feb 2009, 19:46
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.
Re: USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.
Publicado: 20 Feb 2009, 07:58
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!
Re: USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.
Publicado: 01 Mar 2009, 00:46
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
Re: USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.
Publicado: 01 Mar 2009, 01:55
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.
Re: USAR CONSOLA CMD ATRAVÉS DE UN FORMULARIO DE AUTOIT.
Publicado: 01 Mar 2009, 13:24
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
.