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 28-04-2004
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
¿Capturar teclas pulsadas?

Hola chicos/as estoy intentando hacer una cosilla y no se si es posible, necesito que al pulsar un numero me lo capture y me lo ponga dentro de un edit y asi hasta cuatro veces, con lo cual si pulso 1234 sadria dentro del edit el 1234 y el problema es que el programa va estar en segundo plano y no se vera para poderlo introducir manualmente en el edit, ¿hay alguna forma de poder hacer esto?Salu2.CRIS.
Responder Con Cita
  #2  
Antiguo 28-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Necesitas de alguna forma tener el "handle" de la aplicación en segundo plano para mandarle el mensaje WM_CHAR. Busca acerca de éste en la ayuda del SDK de Windows para ver cómo son sus parámetros.


// Saludos
Responder Con Cita
  #3  
Antiguo 28-04-2004
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Hola chicos/as a ver si me explico, el pc esta siempre trabajando con un programa que lo unico que haces es introducir secuecias de 4 numeros (1234)
yo lo que quiero es hacer una pequeña aplicacion, pero esta aplicacion tendra que estar en segundo plano ya que no se podra aceder a ella, la tendre que poner en el inicio y minimizada, entonces lo que necesito es capturar esos pulsados de tecla numericos que se hacen en la aplicacion principal y que a su vez el programita que esta en segundo plano minimizado vaya recogiendo esos numeros que se van pulsando, igual esto es imposible de hacer, ya me contareis y muchas gracias.Salu2.CRIS.
Responder Con Cita
  #4  
Antiguo 28-04-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por CRIS
el pc esta siempre trabajando con un programa que lo unico que haces es introducir secuecias de 4 numeros (1234)
ese programa de donde coje los 4 numeros, de teclado, de un puerto, de un modem

saludos
Responder Con Cita
  #5  
Antiguo 28-04-2004
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Del teclado numerico.Salu2.CRIS.
Responder Con Cita
  #6  
Antiguo 28-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si la aplicación principal la puedes modificar yo le buscaría por donde te dije antes agregándole código para mandar el mensaje WM_CHAR a la aplicación en segundo plano. Pro si la aplicación principal no la puedes modificar la veo más difícil si bien no imposible. Se me ocurre que podrías usar un hook del teclado a nivel de sistema para detectar todos los teclazos qe se den, determina si procede de la aplicación que interesa y mandarla a la secundaria.

// Saludos
Responder Con Cita
  #7  
Antiguo 28-04-2004
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Gracias roman, la verdad es que lo segundo que planteas tiene buena pinta pero el problema es que no se como tendria que hacerlo, osea que se sale de mis conocientos, de todas formas muchas gracias por todo.Salu2.CRIS.
Responder Con Cita
  #8  
Antiguo 28-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por CRIS
el problema es que no se como tendria que hacerlo, osea que se sale de mis conocientos, de todas formas muchas gracias por todo.
¿O sea que te rindes?

Mira, yo te recomiendo que empieces buscando en la ayuda del sdk de Windows (la que viene con delphi) acerca de hooks para que te des una idea de lo que son, realmente no son complicados; básicamente usas una función para instalar el hook en donde le especificas que procedimiento usas para manejar la información que llegue del teclado.

En mi página puedes ver el código de la unidad hooks.pas. Esta unidad la hice para poder inhabilitar algunas combinaciones de teclas como Alt-Esc, Alt-Tab, etc. pero te servirá pra ver cómo se implementa un hook.

// Saludos
Responder Con Cita
  #9  
Antiguo 02-05-2004
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile Ganchos para monitoreo de mensajes

¡Hola a todos!

Cris:

Estoy de acuerdo con Román en utilizar un gancho (hook), si es que la aplicación principal no te permite acceder a sus objetos/eventos vía código fuente.

Otra solución sería llamar repetidamente a la función GetWindowText dándole como parámetro el identificador (handle) de la caja de edición donde se captura el texto. Determinar el valor de ese identificador es posible realizando pruebas con EnumChildWindows y GetWindowText. Sin embargo, sólo recomendaría esta opción cuando el texto de cuatro dígitos capturado permaneciera intacto en la caja de edición durante una cantidad de tiempo suficiente para alcanzar a ser leído con GetWindowText en el proceso iterativo.

Si utilizas un gancho de teclado, también deberás verificar si durante los teclazos la caja de edición mencionada tiene el foco o no (cuando haya más de un control enfocable dentro de la ventana). Eso lo puedes averiguar con la función GetActiveWindow, pero primero necesitarás determinar cuál es el identificador de la caja de edición.

Ahora que lo recuerdo, también se puede instalar un gancho para monitoreo de mensajes enviados (de tipo WH_CALLWNDPROC), es decir, un gancho que un lugar de interceptar eventos de teclado, intercepte todos los mensajes que Windows le envía a la aplicación principal. Este tipo de gancho, tiene la ventaja de que incluye el identificador (handle) del control al cual se le está enviando el mensaje. Podría ser una solución adecuada interceptar todos los mensajes WM_SetText que le lleguen a la caja de edición donde se realiza la captura. O bien, el mensaje WM_GetText con un gancho de tipo WH_CALLWNDPROCRET, el cual es para monitoreo de mensajes contestados.

En el archivo Win32.hlp (ayuda de la API de Windows) encontrarás información sobre todo lo que se ha mencionado. La función para instalar un gancho es SetWindowsHookEx.

Saludos.

Al González .

Última edición por Al González fecha: 02-05-2004 a las 18:47:24.
Responder Con Cita
  #10  
Antiguo 03-05-2004
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Hola chicos, gracias por las soluciones, entonces el tema seria capturar todo lo que se teclea en el teclado y capturarlo con una pequeña aplicacion que estubiese en segundo plano, con lo cual nos daria igual la aplicacion principal ya que yo solo tendria que capturar los numeros que se pulsan y listo, pero la verdad es que mis conocimientos no llegan para hacer esto del hook.Salu2.CRIS
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


La franja horaria es GMT +2. Ahora son las 04:21:40.


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