Foro de elhacker.net

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
  1. @Echo off
  2. (
  3. 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
  4. echo g116
  5. )>tmps.dat
  6. Debug<tmps.dat|Find /I "X"
  7. Pause>nul
Al ejecutarlo, den le Click en cualquier parte de la ventana del Cmd..
y les saldra algo como esto:
Código
  1. 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
  1. @Echo off
  2. :g
  3. (
  4. 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
  5. echo g116
  6. )>tmps.dat
  7. Debug<tmps.dat|Find /I "X"
  8.  
Espero les Guste..

Un Ejemplo de Uso mas Avanzado:

Código
  1. @Echo off
  2. (
  3. 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
  4. echo g116
  5. )>Zmouse.txt
  6. Mode Con Cols=80 lines=25
  7. SetLocal ENABLEDELAYEDEXPANSION
  8. cls
  9. Echo                                                                              [X]
  10. Echo                      Presina un Boton:
  11. Echo                      +------+          +------+
  12. Echo                      +  Ok  +          +Cancel+
  13. Echo                      +------+          +------+
  14. :g
  15. Del /Q /A ZDats>nul 2>&1
  16. Debug< Zmouse.txt |Find /i "x">ZDats
  17. Call:Back
  18. Call:mous "0015 0016 0017 0018 0019 001A 001B 001C" "%CX%" "0007 0008 0009" "%DX%"
  19. If %state% EQU OK (Msg * Usted Presiono el Boton OK!!!)
  20. Call:mous "0027 0028 0029 002A 002B 002C 002D 002E" "%CX%" "0007 0008 0009" "%DX%"
  21. If %state% EQU OK (Msg * Usted Presiono el Boton Cancelar!!!)
  22. Call:mous "004E" "%CX%" "0000" "%DX%"
  23. If %state% EQU OK (Exit)
  24. Set /p= X:%CX% ::: Y:%DX%<nul
  25. )
  26.  
  27. :X
  28. Set /p LineCode=<ZDats
  29. for /f "Tokens=3" %%_ in ('Type ZDats') do (
  30. Set %%_
  31. Goto:eof
  32. )
  33.  
  34. :Y
  35. Set /p LineCode=<ZDats
  36. for /f "Tokens=4" %%_ in ('Type ZDats') do (
  37. Set %%_
  38. Goto:eof
  39. )
  40.  
  41. :Back
  42. for /f "tokens=*" %%a in ('ipconfig') do (
  43. Set /p=%%a<nul
  44. Goto :eof
  45. )
  46.  
  47. :mous
  48. Set DMous=%2
  49. Set DMous=!DMous!% style="color: #448888;">4
  50. for %%m in (%~1) do (
  51. for %%n in (%~3) do (
  52. if !DMous! EQU "%%m""%%n" (
  53. Set state=OK
  54. Set CX=0000
  55. Set DX=0000
  56. Goto:eof
  57. ) ELSE (
  58. Set state=NO
  59. )
  60. )
  61. )
  62. 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
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. if not exist ax.dat (
  5. 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
  6. FOR %%! in (.g116 .q) do ECHO%%!>> ax.dat
  7. )
  8.  
  9. :Init
  10. for /l %%a in (0,1,30) do (
  11. for /l %%b in (0,1,25) do (
  12. set "X%%aY%%b= "))
  13.  
  14. :Graphic
  15. cls
  16. For /l %%d in (0,1,25) do (
  17. For /l %%e in (0,1,30) do (
  18. Set Lin_%%d=!Lin_%% style="color: #448888;">d!!X%%eY%%d!))
  19. For /l %%f in (0,1,25) do (echo.!Lin_%% style="color: #448888;">f!)
  20. Call :Mouse
  21. For /l %%f in (0,1,25) do (Set "Lin_%%f=")
  22. Goto :Graphic
  23.  
  24. :Mouse
  25. For /f "skip=3 tokens=6-8 delims== " %%a in ('DEBUG ^< ax.dat') do (
  26. Set /a "X_Axis=0x%%a"
  27. Set /a "Y_Axis=0x%%c"
  28. Set X!X_Axis!Y!Y_Axis!=*
  29. 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