PDA

View Full Version : Messaggistica Windows


Mezzetti0903
21-02-2005, 21:26
Ho bisogno di una mano a capire come si fa a :

Trovare la locazione di un controllo
Trovare la dimensione di un controllo
Ricavare il testo di un controllo

Sapendo:
l'handle del controllo, che il controllo è una classe AfxFrameOrView42s.

Vi prego...datemi una mano:muro: :muro:

71104
21-02-2005, 23:30
se hai l'handle la classe non serve a niente; per trovare la locazione e la dimensione secondo il riferimento del controllo parent (dello schermo se il parent è nullo) usa GetWindowRect; per trovare il testo usa GetWindowText (eventualmente con GetWindowTextLength); la GetWindowText non funziona se il controllo è un EDIT creato da un altro processo.
ciao

tglman
22-02-2005, 16:24
Per trovare l'hwnd puoi utilizzare le funzioni FindWindow e FindWindowEx

Mezzetti0903
22-02-2005, 18:28
Il controllo è un AfxFrameOrView42s ma la GetWindowsText non funge.

Soluzioni?Alternative??
Pensavo a passare per la clipboard ma non so come "selezionare tutto" nè posso ricavarlo con spy++ visto che il prog che ho sotto mano non ha quell'opzione nel menù modifica.


Per la dimensione....grazie!

71104
22-02-2005, 22:41
se GetWindowText non funge e la classe non è EDIT allora vuol dire per forza che il testo è stato disegnato con TextOut o DrawText, e per farlo leggere ad un programma esterno hai tre possibili modi:
1) intercettare le funzioni API GDI che disegnano il testo, soluzione non banale
2) cercarlo nella memoria del processo e cercare di trovare un criterio per scoprire sistematicamente dov'è che questo testo viene allocato
3) usare algoritmi di IA... :D

NB: le 3 possibili soluzioni le ho elencate in ordine di complessità dalla + facile alla + difficile

Mezzetti0903
23-02-2005, 13:01
la due...l'ho gia provata....ho perlustato la memoria del prog alla ricerca del testo...ma niet...nisba...non c'era!
Poi recuperarlo da un altro processo ..sarebbe un altro problema

...le altre idee...non so...mi sembra un po' "sproporzionato" per ricavare solo un po' di testo.

qualcuno ha altre idee??
Cmq...grazie!

Mezzetti0903
24-02-2005, 13:21
up

71104
24-02-2005, 13:32
è inutile che uppi :D in generale non ci sono altre soluzioni; forse ce n'è qualcuna specifica per quel programma. il programma in questione da dove lo prende il testo che scrive? lo legge da un file?

tglman
25-02-2005, 08:55
Prova a vedere nei resource del programma, spesso le stringe vengono allocate li..

ma non saprei..

Ciao!!