Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-08-2007
fonx fonx is offline
Miembro
 
Registrado: feb 2007
Posts: 54
Poder: 18
fonx Va por buen camino
Win Api, handles y capturar texto de un textbox

Hola, os expongo lo que quiero hacer y me comentais si es posible en delphi:

quería hacer un programa que capture el texto de un componente de texto de otra ventana. En c y c++ es posible. Cojo el handle del componente de texto y mediante mensajes me dice cuantas líneas hay en el componente y yo voy cogiendo la línea que quiera, así que podría coger desde la línea 1 hasta la última que aparezca.

Esto es la teoría y debería funcionar. El caso es que empecé a hacer la aplicación en c++ pero los IDE que probé (Dev-c++ y MSVS2005) no tienen interfaz para hacer los formularios graficamente así que me puse a mano a hacer los formularios y estoy un poco hasta el gorro porque cada dos por tres me atasco.

Sin embargo los formularios en delphi se hacen estupendamente y en dos clicks, y la programación es muy llevadera entonces estaba pensando si se podría llegar hasta ese nivel con el api de windows en delphi.
Responder Con Cita
  #2  
Antiguo 20-08-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola,

si quieres una respuesta corta, es decir, ¿se puede hacer con Delpi?
Entonces si se puede.

Quieres más detalles de como hacerlo. Tú idea es buena y además la más lógica. Busca por los foros y hallarás mucha información al respecto, se ha debatido otras veces éste tema. Para muestra un botón
Si te quedas estancado en algo en concreto, postéalo e intentamos solucionarlo entre todos.

Saludos
Responder Con Cita
  #3  
Antiguo 20-08-2007
fonx fonx is offline
Miembro
 
Registrado: feb 2007
Posts: 54
Poder: 18
fonx Va por buen camino
Muy interesante Bicho, muchas gracias, le tengo q echar un ojo muy detenidamente .
Responder Con Cita
  #4  
Antiguo 21-08-2007
fonx fonx is offline
Miembro
 
Registrado: feb 2007
Posts: 54
Poder: 18
fonx Va por buen camino
Bueno chicos/as, vamos con resultados. Antes de nada tengo q decir q no use delphi sino VB.NET por el motivo de que en casa no tengo ningun compilador de Delphi y estas pruebas no las puedo hacer aquí en el trabajo, queria conseguir el 7 pero como q de un día para otro así q hice pruebas con el vb porque la API de Windows sigue siendo la misma así como las llamadas, no? Bueno, si el moderador cree que no puedo postear pq no lo hice en Delphi...tendré q acatar la decision, aunq no voy a poner código salvo las llamadas.

Primero decir q...FUNCIONO!!!! ...pero luego añadir que....DEJO DE FUNCIONAR!!!

Mi bucle es el siguiente (mas o menos en pseudocodigo):

sCurLine es un string, con espacio reservado para 80 caracteres.
k, i son enteros, comento q antes eran long pero no funcionaba y era pq tienen q ser enteros de 32 bits, y en la arquitectura win32 integer ya es de 32 bit por lo que no hay q usar long, q en win32 son de 64 bits, por lo menos para vb.net

k = SendMessage(un_handle, EM_GETLINECOUNT, 0, 0)
esto siempre fuciona, siempre me devuelve un número, y en cada ejecución crece más, logico, cada vez hay más líneas.

Para i = 0 Hasta k - 1
SendMessage(un_handle, EM_GETLINE, i, sCurLine)


Bueno, el caso es que cuando lo probe por primera vez funcionó, me cargaba en sCurLine la línea correspondiente. Entonces seguí adelante y puse código para guardar el string en un fichero y como no me ponia bien los saltos de línea fui haciendo pruebas debug-stop-debug-stop-debug-stop....hasta q de repente veo que ya no me guarda en el string nada a pesar de coger la información desde la primera linea. sCurLine en cada pasada del bucle es un string de 80 blancos.

Reinicié el ordenador y volvi a depurar y funcionó, pero al parar y volver a depurar dejó de funcionar y ya no lo he vuelto a conseguir desde entonces. No se porque no funciona.

¿Puede ser que la aplicación q intento analizar detecte lo que estoy haciando y cambie la forma de trabajar? No es una aplicación instalada como administrador.
¿Puede ser que con tantas llamadas al SendMessage algo bloquee el acceso?

¿Que diferencia habría con WM_GETTEXT? Hasta lo que lei sobre la API, todos los componentes q aparecen en una ventana realmente son ventanas tb, podría coger todo el texto del tirón en lugar de línea a línea?

Espero no ser muy pesado, gracias de antemano si alguien me puede ayudar.
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
Capturar Texto de una ventana especifica albertoP API de Windows 9 10-01-2007 22:43:55
Capturar parte de un texto Roilo SQL 3 12-01-2006 20:36:43
capturar texto no seleccionado, ComboBox sakuragi OOP 3 10-08-2005 23:28:22
Como capturar texto de un campo MEMO jatorve Conexión con bases de datos 1 16-03-2005 15:42:34
Capturar texto de otras ventanas NeWsP API de Windows 3 27-02-2004 00:47:37


La franja horaria es GMT +2. Ahora son las 16:51:42.


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