FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Handle disabled
Quisiera saber como obtener el handle de un control de un form (como por ejemplo un tedit)
que esta deshabilitado (enabled:=false). Estoy probando con hooks de sistema y logro obtener los handles de los controles al pasar el mouse por encima pero si el control esta deshabilitado obtengo el handle del form. Si alguien puede orientarme un poco por donde buscar o pasarme algun codigo de ejemplo le voy a agradecer. |
#2
|
||||
|
||||
¿Que hooks utilizas? ¿Puedes poner algo de código?
|
#3
|
|||
|
|||
Utilizo una hook de mouse para obtener los handles de los objetos alm pasar el puntero del mouse por encima. paso codigo de libreria y programa.
//aqui en label3 es donde se van mostrando los handles de los controles por los que pasa el puntero del mouse. Lo que me interesa es obtener el handle pero de un control que esta deshabilitado. Última edición por marcoszorrilla fecha: 13-01-2007 a las 16:29:25. |
#4
|
||||
|
||||
Un problema curioso. Y le veo difícil solución, cuando un control (ventana) esta deshabilitado no recibe los mensajes del ratón. También pensé en utilizar la función WindowFromPoint, pero parece que no funciona con las ventanas deshabilitadas.
Se me ocurre que para lo que tu quieres hacer, puede haber otras soluciones que no pasen precisamente por utilizar hooks, quizás enumerando las ventanas podríamos conseguir el handle. ¿Es necesario usar el ratón para seleccionar la ventana? o podemos emplear otros métodos. |
#5
|
||||
|
||||
Cita:
// Saludos |
#6
|
||||
|
||||
Cita:
Es verdad, ChildWindowFromPoint puede obtener el handle de una ventana deshabilitada, pero primero necesitamos tener el handle de su padre, o en su caso abuelos Pero eso lo podemos solucionar fácilmente con un bonito bucle. La cosa quedaría así:
Te dejo todo esto envuelto para regalo , en este zip: |
#7
|
||||
|
||||
Pues acabo de hacer una prueba con el ejemplo que envías y sí que queda bonito el bucle mentado.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#8
|
|||
|
|||
Antes de continuar con el tema específico hago una pausa para comentarte que es la primera vez que escribo en un foro, y la verdad es que me veo gratamente sorprendido por la solidaridad demostrada respondiendo a las preguntas y tan rapido! asique renuevo mi agradecimiento.
Te comento que el codigo que me mandaste se compila perfecto pero no me da ningun resultado.(lo unico que quite es la declaracion de variants de las units porque no la tengo, pero no creo que influya, si compilo bien es porque no la necesitaba supongo). Por otro lado me ayudaste un monton porque resolvi el problema con la funcion ChildWindowFromPoint desde mi programa. Aunque me surgio un nuevo problema. No puedo cambiar el texto de un label de otra aplicacion puesto que esta es un control estatico y no tienen handle. Que me sugeris para resolver el tema. |
#9
|
||||
|
||||
¿Probaste el ejemplo que viene en el zip? ¿No te aparece en el caption del form el handle de las ventanas al mover el ratón? Pues no lo entiendo ...
Por otra parte preguntas como cambiar el texto de un control de otra aplicación. ¿Como lo estas intentando ahora? |
#10
|
|||
|
|||
Cita:
El texto lo cambio como te dije en los anteriores mensaje. Obtengo el handle de cualquier objeto visible al pasar el mouse por encima. Luego cambio el texto del objeto(edit,button,form,etc) pasandole el handle. En unas horas vuelvo al cyber y te paso el codigo completo de la dll y el programa. tengo que hacer un tramite primero y emprolijar primero el codigo porque a esta altura de agregados ya casi ni yo lo entiendo. si tenes idea de como trabajar con labels pasame alguna idea porque estoy desorientado. no se por donde buscar ya que no se como se identifican. seria interesante tambien si sabes alguna manera de espiar todos los mensajes que procesa una aplicacion desde que se crea (una aplicacion externa a la mia) |
#11
|
||||
|
||||
Carlos ¿Usas windows 98? porque el hook de bajo nivel solo funciona en 2000/XP. Es la única explicación que se me ocurre ...
Bueno, dejando ese tema aparte, vamos con tu segunda pregunta. Cita:
Cita:
Cita:
|
#12
|
|||
|
|||
La funcion que utilizo es sendmessage para enviarle el mesaje que quiero que procese la aplicacion destino.
el formato es el siguiente: sendmessage(handle,wm_settext,0,longint(pchar('texto'))) el mismo efecto se consigue con postmessage la diferencia es que post pone el mensaje en la cola de mensajes de la aplicacion destino y retorna. send espera a que le devuelva un valor. el error de la apliacion que me mandaste es como dijiste. lo ejecute en un ordenador con w98. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ayuda sobre Handle | Pascalizado | Varios | 2 | 06-11-2006 05:21:54 |
ayuda comparar Handle | JerS | API de Windows | 3 | 30-10-2006 20:19:01 |
Cambiar la apariencia del DISABLED??? | arieliten | Varios | 4 | 18-03-2005 15:40:34 |
Cannot focus a disabled or invisible window | TONIAM | Varios | 3 | 02-03-2005 17:29:04 |
Obtener Handle de un objeto | senpiterno | Varios | 6 | 22-04-2004 15:21:40 |
|