Mostrando entradas con la etiqueta software. Mostrar todas las entradas
Mostrando entradas con la etiqueta software. Mostrar todas las entradas

sábado, 7 de diciembre de 2013

Transparent Sublime Text 3 at least on Windows


There are sometimes when you like to read content behind your code editor, specially snippets, documentation of APIs or other important stuff that sometimes requires you to switch between your code editor and that documentation (webpage, pdf, etc.).

st3opacity

And that is why it is sometimes useful to have a translucent code editor, and if you love using SublimeText3 editor, you might know that it doesn’t allow you to set its opacity level, so you might end up hitting Alt-Tab hotkeys or adjusting both windows  side by side in order to copy or read a documentation without hassle.

Anyhow, having a little knowledge about Windows APIs gave me the idea to change the application’s alpha opacity level, and since most applications running on Windows let us do it, it is only matter of coding now.

domingo, 15 de mayo de 2011

+ y - para MSPaint - Reemplazando por otras teclas


Hace instantes surgió un problema en un Laptop, y es que como no tienen el teclado numérico (+ y -) y a pesar de probar con la tecla Fn, tampoco se lograba agrandar el tamaño del borrador de Paint.


Por lo tanto me propuse escribir un pequeño programita que permita reemplazar dichas teclas.


Averiguando me encontré con algunas funciones de la API de Windows.


  • GetAsyncKeyState

  • FindWindow

  • GetForegroundWindow, y

  • keybd_event

Con GetAsyncKeyState podemos obtener el estado del teclado, devuelve un valor de 2bytes, y si el bit más significativo está en alta, significa que está presionado.


Por tanto realicé la siguiente función en Delphi:



GetAsyncKeyState(Ord(Edit2.text[1]))and $8000)=$8000



Lo que hace es comparar el bit mencionado de la tecla que hemos asignado en el campo de texto Edit2.


Este es el diseño inicial.


FindWindow GetForegroundWindow nos servirán para : encontrar una aplicación en ejecución (MSPaint) y la ventana que tiene el foco de atención.



(FindWindow(‘MSPaintApp’,nil)=GetForegroundWindow)



Aquí lo que hacemos es comparar si la ventana de MSPaint encontrada es igual a la actual en uso.


Finalmente utilizamos keybd_event para enviar teclados



Sleep(5);
keybd_event(VK_ADD,MapVirtualKey(VK_ADD,0),0,0);


Sleep(5);    keybd_event(VK_ADD,MapVirtualKey(VK_ADD,0),KEYEVENTF_KEYUP,0);



Con ello ya hemos enviado la tecla + (VK_ADD) y para la tecla - utilizamos VK_SUBTRACT
Al final todo ello se realiza dentro de un objeto TTimer el cual se encargará de verificar en cierto intervalo de tiempo (en mi caso 100)
Finalmente aquí tiene el programa para que puedan probarlo ustedes mismos.