Newsgroup: it.comp.lang.delphi
Titolo: Edit

Ciao NG!
Sto creando un'applicazione che deve inserire del testo in edit di altre
applicazioni al click del tasto destro del mouse sull'edit.
Ho cercato di risolvere il problema creando un hook del mouse che quando
intercettava il messaggio di perssione del tasto destro, identificava le
coordinate del punto in cui si trovava il mouse, le inseriva nella funzione
WindowFromPoint(), la quale restituiva l'handle del componente che si trova
in quel punto, e sucessivamente con la funzione SetWindowText() si andava a
modificare il testo.
Il tutto l'ho realizzato con le seg. linee di codice:
Cord:=Msg.pt;                                                //Coordinate
del punto
WinH:=WindowFromPoint(Cord);                   //handle del componente
NCar:=GetWindowTextLength(WinH);            //numero caratteri
Getmem(Prova,NCar);
Prova:='Ciao';                                                //testo da
inserire
SetWindowText(WinH,Prova);                        //inserimento del testo
Questo codice funziona sugli edit della mia applicazione ma sugli edit delle
altre non va!
Qualcuno sa dirmi come risolvere il problema?
Grazie CIAO



Qualcuno sa dirmi come risolvere il problema?
Non puoi usare SetWindowText quando vuoi impostare il testo
di un controllo di un altro processo.  Devi mandare un
messaggio WM_SETTEXT, in modo diretto, all'altra finestra.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 ha scritto nel messaggio
news:3c9c2d8b...@news.tin.it...

Sono nuova degli hook e dei messaggi, ti dispiacerebbe essere piu preciso?
CIAO

Sono nuova degli hook e dei messaggi, ti dispiacerebbe essere piu preciso?
E' una questione legata all'API SetWindowText.  
Usare SetWindowText per settare il testo di un controllo
posseduto dal tuo processo, va bene.
Non va bene se usi questa funzione per settare il testo di
un controllo posseduto da un altro processo.
La stessa MSDN riporta:
"If the target window is owned by the current process,
SetWindowText causes a WM_SETTEXT message to be sent to the
specified window or control. If the control is a list box
control created with the WS_CAPTION style, however,
SetWindowText sets the text for the control, not for the
list box entries. 
To set the text of a control in another process, send the
WM_SETTEXT message directly instead of calling
SetWindowText."


 ha scritto nel messaggio
news:3c9e6469...@news.tin.it...

Ho visto sull'help il WM_SETTEXT e non ho capito come passare il parametro
lParam contenernte la stringa.
Mi potresti scrivere la linea di codice del PostMessage()che devo usare?
Grazie
CIAO

Mi potresti scrivere la linea di codice del PostMessage()che devo usare?
procedure TForm1.Button1Click(Sender: TObject);
var
  S: String;
begin
  S := 'ciao !';
  SendMessage(HandleDellaTuaFinestra, 
              WM_SETTEXT, 
              0, 
              Integer(PChar(S)));
end;


 ha scritto nel messaggio
news:3c9d7f55...@news.tin.it...

Grazie tante ora funziona!
Fino ad ora avevo usato il PostMessage, che differenza c'č?
Cmq la mia applicazione dovrebbe anche inserire del tensto negli edit delle
pagine html dle browser. Esiste un modo per fare questo?
Grazie ciao!

 pagine html dle browser. Esiste un modo per fare questo?
Si', con WM_SETTEXT.
Tuttavia, penso che sia meglio interfacciarsi ad Internet
Explorer e con il metodo Navigate farlo andare dove si
vuole.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:71ba8f4203b863e9711...@mygate.mailgate.org...

No, non intendevo l'edit del browser in ui si inserisce il'indirizzo del
sito da visitare, ma gli edit che compaiono all'interno delle pagine (es.
l'edit in ciu inserisci la parola da ricercare nella rete in Altavista)!
Capito? Hai un'idea per insere del testo anche li?
CIAO

 Capito? Hai un'idea per insere del testo anche li?
Quelle caselle di testo sono controlli come gli altri.
Non l'ho mai fatto, pero' con WinSight scopro che la
casella di testo di altavista, aperto con Internet 
Explorer, ha classe "IntelliFormClass".
Sapendo qual e' la finestra madre, si puo' cercare
la finestra figlia con questa classe ed inserire
del testo li'.  Pero' questo mi sembra un metodo
un po' sporco.  Ti serve realmente fare questo ?


 ha scritto nel messaggio
news:da1f6fa33195d49594e...@mygate.mailgate.org...

Ti dispiacerebbe spiegarmi meglio come fare o magarmi dire dove poter
trovare del codice esempio per questo scopo?