Newsgroup: it.comp.programmare.win32
Titolo: Trasferimento dati da un applicativo all'altro

Ciao a tutti.
Utilizzo VC++ 6.0
Ho visto un applicativo in cui era possibile inviare stringhe di testo da
una finestra ad un altra.
Mi spiego meglio, la finestra Notepad (di windows) era aperta (con il nome
sulla caption) 'Prova.txt - Notepad'
e su un altra applicazione dopo aver settato la stringa 'Prova.txt -
Notepad', tutti gli output
dell'applicazione venivano dirottati verso l'applicativo Notepad.
Disogna utilizzare le DDE o esistono altre strade?
Come si possono trasferire, per esempio, stringhe di testo da un applicativo
all'altro???
Vi sarei grato se mi suggeriste una valida alternativa alle DDE che conosco
molto poco.
Grazie e ciao.

all'altro???
Leggi il mio articolo su:
http://www.vcdj.com/online/articles/mar98/ipc2.asp
Davide Marcato.
----------------------------------------------------
| -- Freelance International Consultant
| -- Win32/MFC/COM Development & Training
| -- Technical Writer & Speaker
----------------------------------------------------
| -- Email: 
mar...@programmers.net
| -- Web: 
http://www.DavideMarcato.com
----------------------------------------------------

 Grazie e ciao.
Puoi utilizzare le pipe o i sockets, dipende da cosa defe fare
l'applicazione..
Guarda win32.hlp
-- 
Giancarlo Martini
http://www.mcgsoft.net
EMail 
mcg...@mcgsoft.net

 wrote in message 7m7177$hh1$1...@nslave1.tin.it...


Si Inter-Process Comunication
Mi sono sbagliato a scrivere


Grazie e ciao.
L'applicativo che hai visto tu, semplicemente, una volta acquisito il titolo
della finestra ('Prova.txt - Notepad'), ha fatto un bel FindWindow e si č
trovato l'handle della finestra di classe "edit" del Notepad. Quindi,
simulando dei messaggi WM_CHAR (oppure utilizzando SetWindowText),
ridirezionava il suo output sulla finestra di edit. Questo non č un buon
modo di comunicazione tra i processi (funziona solo con i controlli
predefiniti). Se le applicazioni che devono condividere i dati sono ambedue
programmate da te puoi utilizzare della memoria condivisa con delle DLL
oppure gli appunti. Altrimenti credo che dovrai andare a finire su OLE (che
se non conosci il COM = Component Object Model č molto piů difficile del
DDE).
Ciao, Giuseppe

prendere l'arretrato, non ricordo il numero).
Non e' che stai parlando di IPC...? :-)


Grazie e ciao.
Un sistema che pochi conoscono e che non ho visto citato è il messaggio
WM_COPYDATA.
Va bene per cose semplici perchè è veloce da implementare. Non va bene per
cose più
complesse, dove sarebbe meglio usare DDE, DCOM, i socket, i pipe o CORBA,
ognuno scelga.
Il bello è che tale messaggio porta un blocco dati dallo spazio di
indirizzamento di una applicazione ad un altro.
Ecco la documentazione di MSDN:
WM_COPYDATA
The WM_COPYDATA message is sent when an application passes data to another
application.
WM_COPYDATA
wParam = (WPARAM) (HWND) hwnd;            // handle of sending window
lParam = (LPARAM) (PCOPYDATASTRUCT) pcds; // pointer to structure with data
Parameters
hwnd
Handle to the window passing the data.
pcds
Pointer to a COPYDATASTRUCT structure that contains the data to be passed.
Return Values
If the receiving application processes this message, it should return TRUE;
otherwise, it should return FALSE.
Remarks
An application must use theSendMessage function to send this message, not
thePostMessage function.
The data being passed must not contain pointers or other references to
objects not accessible to the application receiving the data.
While this message is being sent, the referenced data must not be changed by
another thread of the sending process.
The receiving application should consider the data read-only. The pcds
parameter is valid only during the processing of the message. The receiving
application should not free the memory referenced by pcds. If the receiving
application must access the data after SendMessage returns, it must copy the
data into a local buffer.
QuickInfo