elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: GuÝa actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programaciˇn
| |-+  Scripting
| | |-+  [BATCH] ┐Cˇmo ubicar la ventana en coordenadas especÝficas?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] ┐Cˇmo ubicar la ventana en coordenadas especÝficas?  (Leído 6,575 veces)
cyberalejo17

Desconectado Desconectado

Mensajes: 12



Ver Perfil
[BATCH] ┐Cˇmo ubicar la ventana en coordenadas especÝficas?
« en: 19 Abril 2014, 21:08 »

Buenas tardes,

Estoy trabajando en un script de batch de Windows. Estoy buscando alguna forma de ubicar la ventana en una coordenada especÝfica de la pantalla.

Se que se puede hacer modificando parßmetro del registro, pero hace alg˙n tiempo me pareciˇ leer que se podÝa realizar utilizando un comando similar al de cambiar las dimensiones:

MODE CON COLS=40 LINES=5

No logro encontrar esa pßgina web.

┐De casualidad alguien conoce cˇmo se podrÝa realizar esto sin utilizar llamadas al registro?

Muchas gracias.


PD. Si a alguien le interesa, se trata de un script que automatiza la tarea de montar una particiˇn cifrada de truecrypt modo portable de una memoria usb y abrir un ba˙l de contrase˝as de keepass (que se encuentra dentro de la unidad cifrada). Todo funciona perfectamente.


Ya lo compartÝ a la comunidad.
Pueden encontrar el cˇdigo en:
http://foro.elhacker.net/scripting/aporte_batch_automatizar_apertura_volumen_y_baul_cifrado-t412971.0.html;msg1936475



« Última modificación: 19 Abril 2014, 23:16 por cyberalejo17 » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: [BATCH] ┐Cˇmo ubicar la ventana en coordenadas especÝficas?
« Respuesta #1 en: 20 Abril 2014, 10:53 »

Una aplicaciˇn CLI (CommandLine Interface) se trata de manera muy distinta que una aplicaciˇn GUI (Graphical User Interface), una app CLI no entiende de ventanas y no puedes tener el control del tama˝o y posiciˇn desde la propia CMD o desde ninguna otra aplicaciˇn CLI (de forma nativa, sin usar APIs). De echo el comando 'Mode Con...' realmente no redimensiona la ventana, lo que hace es redimensionar el buffer.

Windows se encarga de detectar y ubicar las nuevas instancias que inicies de la CMD, y en las propiedades de la CMD (click derecho > propiedades > dise˝o) puedes modificar la posiciˇn por defecto de la ventana de la CMD, eso afectarß a TODAS las nuevas instancias ...no a la actual, pero ojo, no confundir esto con todo lo que acabo de decir, no se puede tener control de la ventana desde una app CLI una vez este corriendo (sin usar APIs).

En fin, el valor por defecto lo puedes modificar en la siguiente clave:
Código:
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"WindowPosition"=dword:Valor

Es un valor DWORD, para asignarlo debes combinar un Lo-Word (posiciˇn X) y un Hi-Word (posiciˇn Y) para crear un valor Dword, es decir, combinar dos valores Int16 (Short) para asignar el valor Int32 (Integer) a la clave.

Si dejas el valor vacio, windows ubicarß la CMd en la posiciˇn por defecto.

Para tener control de la ventana desde la propia consola deberÝas utilizar un lenguaje capacitado para usar la API de Windows, especÝficamente las funciones FindWindow y MoveWindow, y crear un loader bßsico en ese lenguaje que se encargue de iniciar tu Script .Bat, y seguÝdamente ubicar la CMD que este instancia.

Otra slaternativas mßs simples serÝa depender de aplicaciones CommandLine de terceros que ya manejan la WinAPI, como por ejemplo usando el parßmetro /mov de la aplicaciˇn CMDOW.

Saludos.


« Última modificación: 20 Abril 2014, 11:05 por Eleкtro » En línea


cyberalejo17

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: [BATCH] ┐Cˇmo ubicar la ventana en coordenadas especÝficas?
« Respuesta #2 en: 21 Abril 2014, 05:15 »

Muchas gracias por tu respuesta.

HabÝan varias cosas que desconocÝa.

No me quiero complicar utilizando herramientas y lenguajes adicionales.
Por lo pronto creo que voy a dejar mi script tal y como estß.
Para futuros desarrollos los voy a aplicar.


┐A propˇsito del script, que te parece?
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: [BATCH] ┐Cˇmo ubicar la ventana en coordenadas especÝficas?
« Respuesta #3 en: 21 Abril 2014, 06:09 »

┐A propˇsito del script, que te parece?

Pues, dejando a un lado las florituras (el dise˝o de los menus y tal) y centrßndome en la parte importante que se debe tener mßs en cuenta, es decir, en el cˇdigo, la forma en que lo has desarrollado, y su funcionalidad, debo decir que me parece un muy buen Script.

Para ser Batch lo hiciste bastante bien, con varios detalles y se nota que le pusiste empe˝o al hacerlo, estß muy bien, lo que mßs puedo valorar del Script es que lo documentaste.

Por otro lado, no quiero ponerme a sacar muchos defectos (o mejoras) porque siempre puedo acabar sacando una docena de ellos xD, pero veamos... te comentarÚ algunos aspectos importantes a tener en cuenta:

1. En muchas ocasiones no haces uso de las comillas dobles para encerrar variables ni expresiones, asÝ como tampoco haces ning˙n uso de los operadores de agrupaciˇn (), eso es una mala costumbre que debes corregir, ya que en ciertas circunstancias esto ocasionarß errores indeseados, y tambiÚn es una mejora a la sintaxis de tu Script y darß una mayor libertad si quieres concatenar instrucciones.

Por ejemplo, esta ruta que contiene espacios en el nombre:
Citar
Código:
set rutaTC=%programfiles%\TrueCrypt\TrueCrypt.exe
Correciˇn:
Código:
set "rutaTC=%programfiles%\TrueCrypt\TrueCrypt.exe"

Y aquÝ:
Citar
Código:
if not exist "%letraTC%:\%rutaArchvoKP%" goto :MONTAR_RW_var2
Correciˇn:
Código:
if not exist "%letraTC%:\%rutaArchvoKP%" (goto :MONTAR_RW_var2)


2. Esto quizßs dependa mßs de gustos y del concepto que cada persona tenga sobre la organizaciˇn, pero en mi opiniˇn el cˇdigo se puede organizarm mejor ...podrÝas separar los menus y otros mensajes, del cˇdigo funcional, por ejemplo:

Código
  1. @Echo OFF
  2.  
  3. REM =====
  4. REM MENUS
  5. REM =====
  6.  
  7. :Menu1:: Menu con las opciones para montar unidad.
  8. echo  ╔════════════════════════════════════════════════════════════════════════════════╗
  9. echo  ║                                   Abrir USB                                    ║
  10. echo  ╠═════════════════════════════╦══════════════════════════════════════════════════╣
  11. echo  ║                             ║                                                  ║
  12. echo  ║ TC Principal                ║                                                  ║
  13. echo  ║  1) Sólo lectura ˙˙˙˙˙˙˙˙˙˙˙║ Monta la unidad principal en modo RO (defecto)   ║
  14. echo  ║  2) Escritura ˙˙˙˙˙˙˙˙˙˙˙˙˙˙║ Monta la unidad principal en modo RW             ║
  15. echo  ║                             ║                                                  ║
  16. echo  ║                             ║                                                  ║
  17. echo  ║ Baúl                        ║                                                  ║
  18. echo  ║  3) Abrir baúl ˙˙˙˙˙˙˙˙˙˙˙˙˙║ Monta la unidad principal en modo RW e inicia el ║
  19. echo  ║                             ║   baúl de contraseĄas                            ║
  20. echo  ║                             ║                                                  ║
  21. echo  ║                             ║                                                  ║
  22. echo  ║                             ║                                                  ║
  23. echo  ║                             ║                                                  ║
  24. echo  ║ Extras                      ║                                                  ║
  25. echo  ║  4) Mostrar archivos ocultos║ Mostrar las carpetas ocultas en la memoria       ║
  26. echo  ║                             ║                                                  ║
  27. echo  ╚═════════════════════════════╩══════════════════════════════════════════════════╝
  28. Goto :EOF
  29.  
  30. :Menu2:: Menu con las opciones para desmontar la unidad
  31. ...
  32. Goto:EOF
  33.  
  34. :Menu3:: Advierte el preligro de la ejecucion de attrib.
  35. ...
  36. Goto:EOF
  37.  
  38.  
  39. REM ==============
  40. REM CËDIGO PRINCIPAL
  41. REM ==============
  42.  
  43.  
  44. REM Resto del cˇdigo...
  45.  
  46. :MENU_NOT_EXIST
  47. cls
  48. Call :Menu1
  49. set var=1
  50. set /p var= Seleccione una opción (1-4) [1]:
  51. if %var%==1 goto :MONTAR_RO
  52. if %var%==2 goto :MONTAR_RW
  53. if %var%==3 goto :MONTAR_RW
  54. if %var%==4 goto :MOSTRAR_ADVERTENCIA
  55. goto :eol
  56.  
  57. REM Resto del cˇdigo...


3. DeberÝas reemplazar el comando 'Set /P' por el comando 'Choice' para evitar respuestas erroneas (1-4) (aunque las estÚs controlando de forma bßsica con una llamada a una etiqueta)

Código:
Choice /C "1234" /M "Seleccione una opción"


Saludos.
« Última modificación: 21 Abril 2014, 06:16 por Eleкtro » En línea


cyberalejo17

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: [BATCH] ┐Cˇmo ubicar la ventana en coordenadas especÝficas?
« Respuesta #4 en: 27 Abril 2014, 05:08 »

Muchas gracias por tu comentario. Voy a realizar las modificaciones.

Ya le he cambiado varias cosas, entre esas las opciones de los men˙s.


Un peque˝o comentario.

Al inicio del script, la parte de las variables, donde tu indicaste:
Código:
set rutaTC=%programfiles%\TrueCrypt\TrueCrypt.exe

Lo puse sin comillas ya que cuando se llama a la variable
Código:
echo "rutaTC"
echo "%programfiles%\TrueCrypt\TrueCrypt.exe"
Ya tiene las comillas.

Si se las pongo en la zona de las variables, al invocar la variable quedarÝa:
Código:
echo ""%programfiles%\TrueCrypt\TrueCrypt.exe""
« Última modificación: 27 Abril 2014, 05:20 por cyberalejo17 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines