Newsgroup: it.comp.programmare.win32
Titolo: Dialogare con Notepad

Stavo leggendo il tema inviare tasti ad una applicazione...
Mi potreste fare un piccolo esempio su come un programma c++Builder può
scrivere la parola "Hello World" in una finestra Notepad Aperta, mediante i
SendMessage i FindWindow gliEnumWindow ecc?
Sono parecchio curiosa!

...


 lapsus!
Naturalmente!
=Mc²=

>Sono parecchio curiosa!
Senti, io programmo in Borland Delphi (3) e secondo me in quel thread hanno
fatto di tutto per complicarsi la vita...
Per scrivere nel notepad ti basta una cosa così (non penso sia difficile da
tradurre in C++):
var h:hwnd;
    s:string;
begin
s:='Ciao, prova di invio !!!'+#13#10+'Sono andato a capo';
h:=FindWindow('notepad',nil);
h:=FindWindowEx(h,0,'Edit',nil);
if h=0 then begin
            showmessage('Impossibile trovare il notepad!');
            exit;
            end;
SendMessage(h,wm_setText,0,Integer(s));
end;
oppure, per inviare tasti ad un'applicazione, io farei così:
una chiamata alla SetForeGroundWindow con l'handle della finestra in cui
scrivere e poi un po' di chiamate all' API Keybd_event...
Ciao :-)
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)

 Sono parecchio curiosa!
Con i SendMessage, puoi mandare i messaggi solo al tuo programma e alle tue
finestre.
Ho provato a usare questa funzione con altre hWnd, ma tutto ciò che riesco
ad ottenere è un crash del programma che mi dice "Errore di protezione
generale"... penso sia impossibile fare questo, a meno che Notepad non offra
delle funzioni proprie, come fa Winamp, il quale è possibile richiamarlo da
un proprio programma in C per riprodurre gli MP3.
Se trovi qualche informazione a riguardo, fammelo sapere.
Ciao
    Fabio

 Wella una Miss che programma!! Grande!! Era ora!!...
In effetti mi sento un pó sola!!
Peró almeno ci sono tanti programmatori galanti che mi danno una mano
:)))

 s:='Ciao, prova di invio !!!';


,

SendMessage invia messaggi a TUTTE le finestre, noto il loro HWND.
Se il tuo programma va in crash, allora e' un problema del tuo
programma. Posta il codice che si da' un occhio.
Sent via Deja.com 
http://www.deja.com/
Share what you know. Learn what you don't.

potesse
Invece si puo`. Cio` che e` vero e` che certi messaggi funzionano
correttamente se spediti da un processo all'altro... ma il messaggio comunque
arriva.
Bye! Lorenzo Lutti (
http://members.tripod.it/fidocad
)

correttamente
*non* funzionano correttamente... orrore di battitura. :)


Non so che altro provare...
Metti il controllo if (h==0) dopo la prima asseganzione ad H ...
infatti con la FindWindow cerco la finestra del notepad con la  FindWindowEx
cerco una finestra figlia di H (che sarebbe il notepad) con classe 'Edit' e
probabilmente se H è 0 lui trova comunque, da qualche parte, una finestra
Edit...


HWND h;
String s;
s="Ciao, prova di invio !!!";
h=FindWindow("notepad",NULL);
if (h==0)  Application->MessageBox("Impossibile trovare Notepad","Messaggio
Errore",MB_OKCANCEL | MB_OK);
h=FindWindowEx(h,0,"Edit",NULL);
SendMessage(h,WM_SETTEXT,0,900000);
Ora diciamo che fa tutto meno che visualizzare la stringa s... ho provato e
per caso mettendo 900000 a lparam riempie la finestra notepad con un sacco
di y, questo perché valori stringa non vengono accettati. Riconosce anche se
é presente un notepad o meno. Ora comincieró a giocare un pó con il
KeybdEent, se intanto qualcuno riesce a correggere il sorgente...
;)
