Título: [BATCH] ¿Cómo ubicar la ventana en coordenadas específicas? Publicado por: cyberalejo17 en 19 Abril 2014, 21:08 pm 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 (http://puu.sh/8fe16.png) Título: Re: [BATCH] ¿Cómo ubicar la ventana en coordenadas específicas? Publicado por: Eleкtro en 20 Abril 2014, 10:53 am 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] 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. Título: Re: [BATCH] ¿Cómo ubicar la ventana en coordenadas específicas? Publicado por: cyberalejo17 en 21 Abril 2014, 05:15 am 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? Título: Re: [BATCH] ¿Cómo ubicar la ventana en coordenadas específicas? Publicado por: Eleкtro en 21 Abril 2014, 06:09 am ¿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 Código: set "rutaTC=%programfiles%\TrueCrypt\TrueCrypt.exe" Y aquí: Citar Código: if not exist "%letraTC%:\%rutaArchvoKP%" goto :MONTAR_RW_var2 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
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. Título: Re: [BATCH] ¿Cómo ubicar la ventana en coordenadas específicas? Publicado por: cyberalejo17 en 27 Abril 2014, 05:08 am 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" Si se las pongo en la zona de las variables, al invocar la variable quedaría: Código: echo ""%programfiles%\TrueCrypt\TrueCrypt.exe"" |