Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-02-2015
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 26-02-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Utiliza la API GetForeGroundWindow para obtener el handle de la ventana.

A partir de ahí deberías poder mandarle mensajes...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 26-02-2015
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 26-02-2015
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
engranaje Va por buen camino
Has revisado esta entrada del foro?

http://www.clubdelphi.com/foros/showthread.php?t=31113
Responder Con Cita
  #5  
Antiguo 26-02-2015
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Cita:
Empezado por engranaje Ver Mensaje
Has revisado esta entrada del foro?

http://www.clubdelphi.com/foros/showthread.php?t=31113
gracias lo he probado, pero me falta saber como meto la ventana en
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
Responder Con Cita
  #6  
Antiguo 27-02-2015
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
engranaje Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 27-02-2015
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Smile

Cita:
Empezado por engranaje Ver Mensaje
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.
Muchas gracias, había probado un montón de ejemplos pero el que me pones es el único que he conseguido hacer funcionar como esperaba.
Responder Con Cita
  #8  
Antiguo 28-02-2015
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
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.
Responder Con Cita
  #9  
Antiguo 01-03-2015
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
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;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Teclado virtual toni.vi OOP 7 12-03-2009 21:16:41
Teclado virtual para TPV Steal API de Windows 5 25-02-2009 00:45:06
Desarrolo de un teclado virtual como el de windows ALMERA API de Windows 2 11-04-2008 11:44:24
Teclado Virtual elcolo83 Varios 2 18-02-2008 12:25:51
Como hacer un teclado virtual Andres_Franco DelphiPACK 2 07-01-2004 09:23:12


La franja horaria es GMT +2. Ahora son las 10:19:02.


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
Copyright 1996-2007 Club Delphi