Como hacer un teclado virtual en delphi?
Como se puede hacer un teclado virtual en delphi?
tipo el que ya trae windows C:\Windows\System32\OSK.EXE pero quiero uno personalizado con sólo unas pocas teclas, los completos no me sirven ya se que hacer un teclado es facil, la cosa es como detecto que el foco,handle de la última aplicacíon que tenía activa para enviarle la pulsación de una tecla¿? gracias |
Utiliza la API GetForeGroundWindow para obtener el handle de la ventana.
A partir de ahí deberías poder mandarle mensajes... |
Gracias ando buscando sobre como usarlo,
pruebo por ejemplo con esto que ge visto por un foro pero no va, quiero por ejemplo enviar la pulsacion de la tecla A: SendMessage(GetForegroundWindow, WM_GETTEXT, 255,Integer(PChar(65))); y lo de GetActiveWindow también tendría que usarlo? |
|
Cita:
hwndWinamp := FindWindow(nil,pchar(rtrim(gWindowName))); //localizamos la ventana vamos que tengo que hacer con el gWindowName porque si pongo gWindowName='nombre de la ventana que quiero controlar' me da error, me dice que tiene que ser hwnd no un string |
Puedes revisar este ejemplo que Peter Below publicó hace algún tiempo en:
http://cc.embarcadero.com/item/18590 Lo cierto es que necesitas el handle de la ventana a la que enviar las teclas y la mejor manera es utilizar foreground enviandola a la ventana activa pero para ello debes conseguir que la ventana en la que está el teclado nunca pueda obtener el foco y pasar a ser la activa. El ejemplo del link debería servirte de ayuda para poder conseguirlo, revisa la clase TNumericKeypad. |
Cita:
|
Con ese ejemplo lo he modificado para el modo que lo necesito,
el problema que no se por qué hay veces que funciona y otras veces tengo que hacer click en el icono de la barra de tareas para que funcione, hay algo mal, pero el codigo del ejemplo es tan complicado que no se que es lo que falla: a ver si alguno veis el fallo: https://dl.dropboxusercontent.com/u/18024062/Prueba.rar Además, seguro que hay un modo menos complicado de hacer esto pero no encuentro otro modo de que funcione. |
Aunque seguramente no sea el mejor modo ya más o menos lo he conseguido que haga lo que quiero,
añadiendo al FormShow NumericKeypad.WindowState:=WSMinimized; NumericKeypad.WindowState:=WSNormal; |
La franja horaria es GMT +2. Ahora son las 11:17:52. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi