Utilizar una selección como variable con Autohotkey

AutoHotkey es una aplicación que utilizo día con día. Ahorra tiempo en tareas comunes y a automatizarlas de forma parcial o completa con solo unas combinaciones del teclado.

Programar secuencia Windows + Shift + D, con AutoHotkey

Este hotkey lo utilizo para crear un acceso directo a una búsqueda en el sitio oficial de la Real Academia de la Lengua Española. Véase en la siguientes capturas de pantalla.

Ejemplo Funcional

1. Selecciona y resalta con el mouse la palabra, esto coloca «inmunológica» en el portapapeles.

2. Llama el comando Tecla Win + Shift + D

El comando llama una nueva tab en tu navegador con el significado de la palabra en el portapapeles.

Código:

Utiliza este snippet en tu archivo de macros. Normalmente es el archivo que lee AutoHotkey cuando lo ejecutas (con extensión *.ahk).

#+d::
    clipboard =
    SEND, ^c
    ClipWait

    Run, firefox.exe https://dle.rae.es/%clipboard%
Return

Puede usarse chrome.exe en su defecto si es que se utiliza Google Chrome para realizar búsquedas. Tengamos en cuenta que esto tiene muchísimo potencial no solamente para hacer búsquedas en un diccionario, si no en cualquier página con tan solo adaptar el esquema de búsqueda en la URL.

Se puedes descargar AutoHotkey desde su página oficial, es gratuita y de código abierto.

https://www.autohotkey.com/

Java: Copiar Archivo de Texto y Guardarlo

En este programa se utilizaron las siguientes clases que ayudaron a lograr el propósito de la aplicación.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;

Algunos componentes Swing:

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

Este programa toma como fuente un archivo de texto, (solo fue probado con archivo RTF y TXT), y como siguiente se escoge donde se quiere guardar la copia, puede escogerse otro nombre si se lo prefiere, al dar clic al boton de comienzo, el archivo es copiado en un formato de texto legible para cualquier procesador de texto.

Función principal del programa:

El usuario proporciona el archivo de texto (TXT o RTF) fuente, siguiente la ubicación o el path para guardar el archivo copia y el programa realizará el proceso de lectura del fuente con las clase BufferedReader, utilizando el FileWriter para escribirlo y PrintWriter para imprimirlo y finalizarlo.

Más información sobre BufferedReader y File

Código:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// new FileChooser(this,true).setVisible(true); /*Se especifica la orden de abrir el seleccionador */
int evtSelected = fc.showOpenDialog(this);

if (evtSelected == JFileChooser.APPROVE_OPTION)
{
//File fichero = fileChooser.getSelectedFile();
// Aquí debemos abrir y leer el fichero.
jTextField1.setText(fc.getSelectedFile().getAbsolutePath() );
}
if (evtSelected == JFileChooser.CANCEL_OPTION)
{
// new FileFrame().setVisible(true);
JOptionPane.showMessageDialog(null, "Accion Cancelada por el usuario", "Cancelado",JOptionPane.INFORMATION_MESSAGE);
}
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int evtSelected = fc.showSaveDialog(this);

if (evtSelected == JFileChooser.APPROVE_OPTION)
{
//File fichero = fileChooser.getSelectedFile();
// Aquí debemos abrir y leer el fichero.
jTextField2.setText(fc.getSelectedFile().getAbsolutePath() );
}
if (evtSelected == JFileChooser.CANCEL_OPTION)
{
// new FileFrame().setVisible(true);
JOptionPane.showMessageDialog(null, "Accion Cancelada por el usuario", "Cancelado",JOptionPane.INFORMATION_MESSAGE);
}
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
if (jTextField1.getText().compareTo("")==0){
JOptionPane.showMessageDialog(null,"Debe especificar el archivo original que desea copiar" , "Atencion", JOptionPane.INFORMATION_MESSAGE);
}else
if (jTextField2.getText().compareTo("")==0){
JOptionPane.showMessageDialog(null,"Debe especificar el nombre del archivo copia" , "Atencion", JOptionPane.INFORMATION_MESSAGE);
} else
try {
// Apertura del fichero y creacion de BufferedReader para poder
// hacer una lectura comoda (disponer del metodo readLine()).
archivo = new File (jTextField1.getText());
fr = new FileReader (archivo);
br = new BufferedReader(fr);
fichero = new FileWriter(jTextField2.getText());
pw = new PrintWriter(fichero);

// Lectura del fichero
String linea = br.readLine();
while(linea!=null){
pw.println(linea);
linea = br.readLine();
}
//for (int i = 0; i < 10; i++)
// pw.println("Linea " + i);
}catch(Exception e){
e.printStackTrace();
}finally{
// En el finally cerramos el fichero, para asegurarnos
// que se cierra tanto si todo va bien como si salta
// una excepcion.
jLabel4.setText("Archivo copiado!");
try{
if( null != fr ){
fr.close();
}
if (null != fichero){
fichero.close();
}
}catch (Exception e2){
e2.printStackTrace();
}
}
}

Número Factorial.

 

 

Este programa usado por un [While] simple en el método para sacar el factorial, procesa el parametro que proporciona el usuario mediante una interfaz simple en Swing, resultado se imprime dentro una label. Si lo prefieres, el límite del cálculo se puede definir dentro de la condicional [if] donde pongo el limite hasta 10.


Función principal del programa:

  • En este simple programa, se procesa el numero [!] factorial de un numero dado del 1-10.

Código del bóton+método:

[sourcecode language=»java» collapse=»true» wraplines=»false»]
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int numero; //Variable local, entera, numero definido por el usuario.
numero = Integer.parseInt(this.jTextField1.getText());
if (numero > 10 || numero < 0) { // Condicional para que solo se usen numeros del 0 al 10
JOptionPane.showMessageDialog(null, "Escribir numero entre 0 al 10.", "Atencion!!", JOptionPane.INFORMATION_MESSAGE);
//Orden para el cuadro de dialogo.
} else {

if (numero == 0) {
rfactorial = "1"; //Obviando el numero cero.
} else {
rfactorial = calcFactorial(numero);
}
this.jLabel3.setText(rfactorial); // Orden para modificar el campo Label.
}

}
private String calcFactorial(int n) { // Creacion del metodo.
int rFacto = 1; //Variable local, se crea cuando se manda llamar al metodo, y se destruye cuando termina su ejecucion.
while (n != 0) {
rFacto = rFacto * (n);
n–;
}
return rFacto + ""; /* Al concatenar comillas al tipo de dato (entero en este caso), automaticamente,
* hace un cast y lo devuelve.
*/
}
[/sourcecode]

Comparación de 3 números.

En este sencillo programa, usado con una interfaz muy sencilla en Java Swing, podremos ver el funcionamiento completo y parcial de la estructura «if«. (Las condiciones están anidadas debido al proceso de comparación entre 3 elementos).

Función principal del programa:

Proporcionar al usuario cual es el numero menor de 3 números proporcionados por él.

Código del Método del Botón:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int ed1 = 0, ed2 = 0, ed3 = 0;
ed1 = Integer.parseInt(this.jTextField1.getText());
ed2 = Integer.parseInt(this.jTextField2.getText());
ed3 = Integer.parseInt(this.jTextField3.getText());

if ((ed1 == ed2) &amp;&amp; (ed1 == ed3)) {
this.jLabel5.setText("Todos tienen la misma edad.");
} else {
if (ed1 &lt; ed2) {
if (ed1 &lt; ed3) {
this.jLabel5.setText("La Persona 1 tiene la menor edad.");
} else {
if (ed1 == ed3) {
this.jLabel5.setText("Las Personas 1 y 3 tienen la menor edad.");
} else {
this.jLabel5.setText("La Persona 3 tiene la menor edad.");
}
}
} else {
if (ed2 &lt; ed3) {
this.jLabel5.setText("La Persona 2 tiene la menor edad.");
} else {
if (ed2 == ed3) {
this.jLabel5.setText("Las Personas 2 y 3 tienen la menor edad.");
} else {
this.jLabel5.setText("La Persona 3 tiene la menor edad.");
}
}
}

}
}

public void HelloWorld();

Bienvenido a mi bitácora de programas en Java. Todo lo publicado aquí, serán mis prácticas sobre mis clases de Desarrollo de Software dentro del Instituto Tecnológico de Chapala.

No soy un programador de nicho pero, me gusta mucho conocer nuevas cosas y entender el desarrollo mismo de mundo de la informatica, por lo cual, las críticas, complementos al proyecto, marcación de errores, consejos, recomendaciones y cualquier otra cosa para mejorar, será bienvenida.

Espero que este espacio sea de utilidad para todos vosotros. Un abrazo.