Autor
|
Tema: ¿Es posible recuperar el texto de un control label mediante API's? (Leído 3,834 veces)
|
TFL
Desconectado
Mensajes: 2
|
Hola a todos, Tras andar buscando y buscando me he decido a preguntar, no se si es algo imposible pero ahí va ... Estoy intentando obtener el texto de las etiquetas de un formulario de una aplicación de VB. ¿Existe alguna forma de localizar los controles sin ventana, por ejemplo el control label, mediante API's? Según he leído los controles sin ventana no envían ni reciben mensajes, entonces, que mecanismo se utiliza cuando se cambia el texto de la etiqueta mediante la expresión: Form1.Label1.Caption = "HOLA" ¿Se imprime el texto en una región predefinida del área cliente de la ventana del formulario? ¿Son las etiquetas regiones independientes de la ventana del formulario y tienen algún manejador alternativo? Bueno...., muchas preguntas son, a ver si podéis arrojar algo de luz sobre mi problema. Gracias.
|
|
|
En línea
|
|
|
|
Hendrix
|
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
sircid
Desconectado
Mensajes: 107
¡Nacido para ******te!
|
habra sido un despite o un error y habra posteado dos veces.
creo que la label no es mas que eso que tu dices. un print con propiedades top, left. si intentas pedir el caption de una label desde vb6 no podras hacerlo como lo haces con un text. no se si con apis se podra.
tan necesario se te hace para que no puedas prescindir de ello?
|
|
|
En línea
|
|
|
|
LeandroA
|
HOLA NO SE PUEDE PUES NO TINE HWND
sALUDOS
|
|
|
En línea
|
|
|
|
Kizar
Desconectado
Mensajes: 1.325
kizar_net
|
HOLA NO SE PUEDE PUES NO TINE HWND
Hay le has dao, no tiene Handle, controles como el textbox., button y demas si que se puede coger el texto desde cualquier ventana, pero el label no es mas que un dibujo en el formulario.
|
|
|
En línea
|
|
|
|
NekroByte
|
Un Label no es ningún dibujo ni nada, es una ventana, por lo tanto tiene un hWnd.
Lo que ocurre es que es una ventana hija de la instancia de tu aplicación, y para encontrar su hWnd primero debes encontrar el de la madre y luego usar la api EnumChildWindows para que te liste todos. O más fácil: con Label.hWnd y listo, jaja, sin tanta complicación.
Para obtener lo que tiene escrito es con GetWindowName().
|
|
|
En línea
|
|
|
|
LeandroA
|
Un Label no es ningún dibujo ni nada, es una ventana, por lo tanto tiene un hWnd.
Lo que ocurre es que es una ventana hija de la instancia de tu aplicación, y para encontrar su hWnd primero debes encontrar el de la madre y luego usar la api EnumChildWindows para que te liste todos. O más fácil: con Label.hWnd y listo, jaja, sin tanta complicación.
Para obtener lo que tiene escrito es con GetWindowName().
mmm, que error hay ventanas que no poseen hwnd una de ellas es el label (que si te fijas no posee la propiedad label1.hwnd)y otra por ejemplo es el control image, si has echo alguna ves un ocx fijate en la ventana del usercontrol que tienen una propiedad llamada windowless y veras que es ta pierde las propiedades de una ventana convencional (hija o no ) es masomenos como una forma de dibujo y no una ventana , y fijate que quita el hwnd
|
|
|
En línea
|
|
|
|
TFL
Desconectado
Mensajes: 2
|
En pimer lugar, perdón por el doble post, fue debido a un error de envío..., y agradecer vuestro interés. Estoy de acuerdo con vosotros en que el control label de VB es un control sin ventana (sin hwnd), y que posiblemente se dibuje en el área cliente del formulario. Considerando esto último pensé que la etiqueta podría encontrarse en una región determinada del área cliente del formulario y a partir del hwnd y el hdc del formulario que contiene al control label y utilizando las funciones API gráficas del "gdi32" podría encontrar un manejador para la región y a partir de él el texto del control label. Bueno..., pues tras buscar API's sólo pude escribir en regiones del área cliente mediante la función TextOut (junto con otras), obtener manejadores de regiones definidas por mí mediante funciones como CreateRectRgn, GetClipRgn, y en fin, sólo escribir y dibujar sobre la ventana del formulario... ¿Es éste un buen camino?, lo digo porque como hay muchísimas API's puede que no haya dado con ella ... Quizás la solución podría estar en saber qué son para windows los controles sin ventana, es decir, al igual que los controles con ventana son identificados por el hwnd, ¿cómo identifica a los controles sin ventana? Creo que si es posible cambiar el texto del control label desde código (Form1.Label1.Caption ="HOLA"), existirá alguna forma de localizar ese texto. ¿Es posible?, ¿Alguna sugerencia?... Salu2.
|
|
|
En línea
|
|
|
|
tena
Desconectado
Mensajes: 668
|
solo por curiosidad, me hice una pequeña aplicacion pedorra con un label, y al fijarme con el Microsoft Spy++ de VB solamente me mostraba el form y ninguna ventana hija, asi que como la mayoria de aqui concluyo que no tiene handle.
Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Control de cubatas mediante tarjetas
Programación General
|
kitos86
|
4
|
2,376
|
20 Febrero 2013, 12:47 pm
por HdM
|
|
|
Customizar texto 2 o 3 veces dentro del mismo label?
« 1 2 »
.NET (C#, VB.NET, ASP)
|
z3nth10n
|
13
|
8,619
|
5 Julio 2013, 15:23 pm
por z3nth10n
|
|
|
Ayuda con cifrar un texto mediante ascci u.u
Programación C/C++
|
AliceLopez14
|
3
|
2,761
|
23 Marzo 2015, 03:40 am
por engel lex
|
|
|
Obtener texto de label en aplicación externa WPF
.NET (C#, VB.NET, ASP)
|
TomaSs
|
4
|
5,277
|
14 Mayo 2016, 04:13 am
por TomaSs
|
|
|
Cambiar texto de Label sin que se superponga (Tkinter)
Scripting
|
SlayerBur
|
1
|
5,670
|
16 Abril 2022, 21:27 pm
por Yidu
|
|