Crear botones batch para una caculadora

Iniciado por Hekaly, 2 Agosto 2010, 13:08 PM

0 Miembros y 1 Visitante están viendo este tema.

Hekaly

Hace un tiempo encontré un comando externo de batch con el que puedes hacer muchas oparaciones aritmeticas, ademas de sacar por terminal decimales. Por ejemplo el script que realizaba ecuaciones de segundo grado que se publico en este foro,  con este comando sería mucho mas fácil.

Ahora bien, estoy trabajando para crear una calculadora cientifica, y me gustaría crear botones para que el usuario aparte de escribir, pudiera pinchar con el raton a los numeros o funciones.

He creado este codigo de ejemplo para que veais mejor lo que quiero decir:

@echo off

echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º                         º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍËÍÍ͹
echo º Sumar       º 1 º 2 º 3 º
echo ºÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹
echo º Restar      º 4 º 5 º 6 º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹
echo º Multiplicar º 7 º 8 º 9 º
echo ºÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹
echo º Dividir     º 0 º   º   º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÊÍÍͼ
colous 0 0 02,02
set /p numero=

pause > nul




* También uso el comando colous.

Mi idea es que el usuario por ejemplo cliquee 12, aprete sumar y cliquee de nuevo 1.

Se que con el comango wbat puedo crear botones, pero no he visto como hacerlos sin que estos sean cuadrados y no rectangulares.

Aqui lanzo mi pregunta, hay alguna forma, con algun comando para que con el raton pinchar un boton hecho en batch??

FerJGS

Si amigo la hay, se trata de usar una aplicación adjunta llamada DEBUG.exe con debug puedes establecer sistemas de coordenadas y aplicar sobre ellas colores, por ejemplo. La idea que tu dices es que establezca un sistema de coordenadas, en la que si pinchas sobre donde está el uno, aparezca el uno. Pero te doy la bienvenida a mi mundo: Porque yo estoy intentando que alguien de aquí me enseñe a usar el debug.

Hekaly

Ya veo FerJGS que los dos estamos esperando como se puede crear coordenadas en batch utilizando debug.exe.

He estado investigando un poco y he visto otras formas de hacerlo, utilizando el comando Cmouse.exe o utilizando el Mouse.dat tambien se puede lograr.

Aquí hay mas información:

http://foro.elhacker.net/scripting/manual_usar_mouse_en_batch-t260579.0.html


Binary_Death

#3
Tienes que definir el objeto como un cojunto de coordenadas, por ejemplo:

set button_1=0,0;0,1;0,2; ... etc

Entonces, luego, con cmouse, colous o mouse.dat, obtienes una coordenada que el usuario clickeo y la compruebas con un find..

echo %button_1%|find ";coordenada;"
if errorlevel 0 (
rem aqui el código que se ejecutará si la coordenada obtenida corresponde a alguna de las coordenadas del objeto
)


Como ves controlando eso puedes saber si se pulso un X botón. Hay diversas maneras, sin embargo esa es la mas simple.
Saludos!

PD: Sobre coordenadas con "debug"... creé un manual hace unas semanas... no te sirve para esto, es más para parte gráfica escribiendo en la memoria de video...

Espero que no sea SPAM, si no, lo quito y no problem, es solo para ayudar: http://foro.portalhacker.net/index.php/topic,113483.0/wap2.html

En fin, saludos.


Hekaly

Gracias Binary_Death.

No se me ocurrió poner cada coordenada de un boton en una variable e ir llamandolas.

Ya ire poniendo los resultados si todo va bien.

bolivianito

Tambien podes usar GUIC, aunque te recomiendo Colous mouse si no quieres tanto la animacion, por que con colous, recibes las coordenadas, en cambio GUIC manejas como objetos.


Luego publicaré una calculadora de ejemplo con GUIC




saludos

Hekaly

Buenas.

Ya he aprendido mas o menos a usar mouse.dat para que me refleje un numero (en este caso 1) en la pantalla de la calculadora.

Pero me hago un lio cuando quiero poner mas botones.

De momento tengo este código:

@echo off


echo. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo. º                         º
echo. ÌÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍËÍÍÍËÍÍ͹
echo. º Sumar       º 1 º 2 º 3 º
echo. ºÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹
echo. º Restar      º 4 º 5 º 6 º
echo. ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹
echo. º Multiplicar º 7 º 8 º 9 º
echo. ºÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÎÍÍÍÎÍÍ͹
echo. º Dividir     º 0 º   º   º
echo. ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÊÍÍÍÊÍÍͼ

:inicio

(
echo e100 B8 1 0'3'DB CD'3'B0 3'C'CD'3'B DB't'FA 91 D3 EA D3 E8 91 C3
echo g116
echo q
)>tmp.dat
Debug<tmp.dat|find /I "1" >tmp.txt
FOR /F "tokens=3" %%A IN ('type tmp.txt ^| find "CX="') DO (
IF "%%A"=="CX=0010" (set numero=1)
IF "%%A"=="CX=0011" (set numero=1)
IF "%%A"=="CX=0012" (set numero=1)
)


colous 0 0 03,02
echo %numero%


(
echo e100 B8 1 0'3'DB CD'3'B0 3'C'CD'3'B DB't'FA 91 D3 EA D3 E8 91 C3
echo g116
echo q
)>tmp.dat
Debug<tmp.dat|find /I "4" >tmp.txt
FOR /F "tokens=3" %%A IN ('type tmp.txt ^| find "CX="') DO (
IF "%%A"=="CX=0010" (set numero2=4)
IF "%%A"=="CX=0011" (set numero2=4)
IF "%%A"=="CX=0012" (set numero2=4)
)


colous 0 0 04,02
echo %numero2%

goto inicio


Lo que intento hacer es convertir el 1 y el 4 en botones para que aparezcan en la pantalla. Si apreto el 1 todo va bien, pero si apreto el 4 o apreto dos veces uno de los botones no se refleja, aparte de decirme que echo esta desactivado.

Lo que he pensado es que al apretar un boton, este se guarde como variable y que redireccione a una parte de mouse.dat para que salga en la pantalla, para volver hacer un bucle al principio y dar a mas botones.

Sabeis cual es el error que cometo??, Se puede dar tantas veces a un boton y que lo refleje en la pantalla??, gracias.




FerJGS

mmm..veamos, si los clics del ratón se guardan en mouse.dat...puedes hacer dos cosas...

a) eliminar el contenido de mouse.dat para tenerlo libre para la siguiente pulsación

b) una vez que ha tomado un valor de mouse.dat, tomarlo de la siguiente línea


puedes hacer un for /f skip %var%  haciendo que la avriable aumente uno cada vez que tome las coordenadas de allí.

Espero que te sirva....

Ahora va mi pregunta....¿alguien puede explicarme detenidamente cómo usar el ratón en batch? Porque no entiendo qué es e 100 B8 A0 CD en debug al principio, no sé como almacenar en variables las coordenadas, ni consultar el archivo, ni crearlo ni nada. ¿Alguien me puede ayudar?

FerJGS

Bueno, ya me he aclarado un poco con el ratón...Ahora te digo que creo que bastaría con un código donde al pulsar un botón se guardara la variable (por ejemplo si haces clic en el botón del 1 guarde una avriable cone l valor de 1. Y con un bucle vuelves al principio, de esta forma te permitiría pulsar otro botón pero la variable se conservaría, ¿no?

Eleкtro

@r7pyrred
¿Cuando empezarás a seguir las normas del foro?

No está permitido revivir posts antiguos.
Tema cerrado.