Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: EddyW en 9 Julio 2009, 09:26 AM

Título: Manual - Usar Mouse en Batch
Publicado por: EddyW en 9 Julio 2009, 09:26 AM
Bueno, eso, ahora jugando con Debug se me ocurrio por que no hacer tambien posible usar el Mouse
en Batch, ya que se podia usar keyBoard..
Pues decidi hacer un Comando MS-DOS en VB6, pero me salio re pesado aun comprimiendolo con UPX..
25Kb, algo grande al convertirlo en Binario para hacerlo Portable, asi que me cae este code..
De la escuela de Batch (Año 1995 - 2005)..

Primero digo que les sera un poco mas dificil entenderlo, ya que no es como el KeyBoard, ya que este no se ensambla..
Bueno sin mas que decir es sencillo, un ejemplo claro:
Código (dos) [Seleccionar]
@Echo off
(
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
)>tmps.dat
Debug<tmps.dat|Find /I "X"
Pause>nul

Al ejecutarlo, den le Click en cualquier parte de la ventana del Cmd..
y les saldra algo como esto:
Código (asm) [Seleccionar]
AX=0003  BX=0001  CX=0038  DX=0014  SP=FFEE  BP=0000  SI=0000  DI=0000
Explico BX=0001 tiene dos valores 0001 y 0002 osea si se hace Click derecho o Izquierdo..
El CX=... es la posicion X del cursor, y DX=... es la posicion Y del Cursor..
Eso nos basta para hacer un buen Batch, y podemos colocarlos en una variable con For..
Otro ejemplo para jugar mas con su funcionamiento:
Código (dos) [Seleccionar]
@Echo off
:g
(
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
)>tmps.dat
Debug<tmps.dat|Find /I "X"
Goto:g

Espero les Guste..


Un Ejemplo de Uso mas Avanzado:


Código (dos) [Seleccionar]
@Echo off
(
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
)>Zmouse.txt
Mode Con Cols=80 lines=25
SetLocal ENABLEDELAYEDEXPANSION
cls
Echo                                                                              [X]
Echo.
Echo.
Echo.
Echo                      Presina un Boton:
Echo.
Echo.
Echo                      +------+          +------+
Echo                      +  Ok  +          +Cancel+
Echo                      +------+          +------+
:g
Del /Q /A ZDats>nul 2>&1
Debug< Zmouse.txt |Find /i "x">ZDats
Call:x
call:y
Call:Back
Call:mous "0015 0016 0017 0018 0019 001A 001B 001C" "%CX%" "0007 0008 0009" "%DX%"
If %state% EQU OK (Msg * Usted Presiono el Boton OK!!!)
Call:mous "0027 0028 0029 002A 002B 002C 002D 002E" "%CX%" "0007 0008 0009" "%DX%"
If %state% EQU OK (Msg * Usted Presiono el Boton Cancelar!!!)
Call:mous "004E" "%CX%" "0000" "%DX%"
If %state% EQU OK (Exit)
Set /p= X:%CX% ::: Y:%DX%<nul
)
Goto:g

:X
Set /p LineCode=<ZDats
for /f "Tokens=3" %%_ in ('Type ZDats') do (
Set %%_
Goto:eof
)

:Y
Set /p LineCode=<ZDats
for /f "Tokens=4" %%_ in ('Type ZDats') do (
Set %%_
Goto:eof
)

:Back
for /f "tokens=*" %%a in ('ipconfig') do (
Set /p=%%a<nul
Goto :eof
)

:mous
Set DMous=%2
Set DMous=!DMous!%4
for %%m in (%~1) do (
for %%n in (%~3) do (
if !DMous! EQU "%%m""%%n" (
Set state=OK
Set CX=0000
Set DX=0000
Goto:eof
) ELSE (
Set state=NO
)
)
)
Goto:eof

Espero les Guste, en Vista la Parte de Set /p= X:%CX% ::: Y:%DX%<nul pueden borrarla ya que les molestara, eso solo funca en XP, pero lo demas funciona Bien..

SaluDOS!!!
Título: Re: Manual - Usar Mouse en Batch
Publicado por: SmartGenius en 11 Julio 2009, 21:48 PM
Un poco mas simple y combinado con el tema de las coordenadas.... ;D

Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion

if not exist ax.dat (
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>ax.dat
FOR %%! in (.g116 .q) do ECHO%%!>> ax.dat
)

:Init
for /l %%a in (0,1,30) do (
for /l %%b in (0,1,25) do (
set "X%%aY%%b= "))

:Graphic
cls
For /l %%d in (0,1,25) do (
For /l %%e in (0,1,30) do (
Set Lin_%%d=!Lin_%%d!!X%%eY%%d!))
For /l %%f in (0,1,25) do (echo.!Lin_%%f!)
Call :Mouse
For /l %%f in (0,1,25) do (Set "Lin_%%f=")
Goto :Graphic

:Mouse
For /f "skip=3 tokens=6-8 delims== " %%a in ('DEBUG ^< ax.dat') do (
Set /a "X_Axis=0x%%a"
Set /a "Y_Axis=0x%%c"
Set X!X_Axis!Y!Y_Axis!=*
Goto :Eof


Saludos.
Título: Re: Manual - Usar Mouse en Batch
Publicado por: morenochico en 14 Julio 2009, 00:47 AM
Muy bien.


;-)
Título: Re: Manual - Usar Mouse en Batch
Publicado por: 0x0309 en 15 Julio 2009, 20:44 PM
_edite el post.
Título: Re: Manual - Usar Mouse en Batch
Publicado por: FerJGS en 7 Septiembre 2010, 13:49 PM
Hola 3D1...me han recomendado este tema para preguntas sobre el ratón...Ahí va mi pregunta...

¿se puede hacer que detecte al posar el ratón en la consola, no hacer clic, sino solo pasarlo por encima)

Algo como

if (ratón en estas coordenadas) (instrucciones)
if "clic en estas coordenadas" (instrucciones)

Lo del clic ya lo tengo...pero se podría detectar al posar el ratón?

Otra cosa...en mouse.dat....BX es el botón, CX y Dx las coordenadas pero..¿qué es todo lo demás? ¿Qué es AX, por ejemplo?

Gracias