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.