View Full Version : Condividere i dati tra più progetti
Premetto: tutto quello che dirò è riferito a VB6.
Ho necessità di realizzare un progetto che scambia dati con altri progetti.
Ad esempio posso inserire un progetto al''interno di un'altro, così facendo creo un gruppo di progetti. Ma come posso avviare l'uno o l'altro e rendere disponibile i dati elaborati da uno all'altro?
Grazie!!!
In teroria non puoi, perchè una volta che tu hai compilato il tutto non crei un Gruppo di Exe ma tanti Exe separati fra di loro, il gruppo di progetti di VB6 è nato per facilitare la visualizzazione di molti singoli progetti ma facente parte di un applicazione che gli utilizza!!
Io nn so cosa ti voglia passare all'altro, ma potresti sempre unasare come mezzo di scambio un file INI oppure il registro di config!
Se mi dici meglio cosa vorresti fare ti posso dare una risposta più concreta sul problema che vorresti risolvere.
ciaoooooooooooo:p
Allora provo a spiegarti meglio.
Il primo progetto è una specie di menù che gestisce gli altri programmi.
Il primo è in grado di avviare gli altri, ma devo poi poter ottenere i dati elaborati da loro, come matrici, variabili, ecc....
Se usassi un file(soluzione vagliata ma scartata) o una tabella per condividere i dati funzionerebbe sicuramente, ma richiede tempi di elaborazione troppo onerosi.
Come posso fare.
Lavorando con un linguaggio di livello molto alto non credo di potermi permettere di accedere ad un'area di memoria destinata alla condivisione dei dati, non mi trovo mica in C o in assembler(non lo userei mai per applicazioni troppo complicate).
Grazie per le risposte
Non possono comunicare fra di loro due exe in VB6
LukeHack
26-09-2003, 01:10
sei sicuro di quello che dici?
e la gestione dei messaggi non è forse una comunicazione tra .exe? (o dll)
io invece credo che sia possibile, per es. mediante api SendMessage()
guarda su msdn!:O
Ma se sai così tante cose, comemai nn cerchi tu :p :p :p :p :p
cmq il SendMessage:
The SendMessage function sends the specified message to a window or windows. The function calls the window procedure for the specified window and does not return until the window procedure has processed the message. The PostMessage function, in contrast, posts a message to a thread’s message queue and returns immediately.
LukeHack
26-09-2003, 02:18
ma il "cerca su msdn" non era per te ma per il creatore del thread:p :D
La soluzione migliore è il file... Non c'è concorrenza... Se ci fosse concorrenza allora sarebbero altre le strade da prendere...
Originariamente inviato da LukeHack
ma il "cerca su msdn" non era per te ma per il creatore del thread:p :D
Ops, sorry non avevo visto il nome!
Mi perdoni :D ?
LukeHack
26-09-2003, 14:21
no:mad:
considerati schiaffeggiato col mio guanto bianco e sfidato a singolar tenzone!:D
domattina all'alba ti consento di scegliere la rivoltella:O
;) ;) ;) ;) :p :p
La msdn l'ho guardata e non ho trovato nulla di buono.
Quindi ho chiesto a voi.
Se progettassi una dll potrei allora scambiare dati tra questi due eseguibili che la utilizzano?
LukeHack
27-09-2003, 01:24
anche tra exe! SendMessage() ripeto o PostMessage
Teoricamente si, ma non devi fare una dll con una multi istanza altrimenti la prima istanza si isola dalla seconda e saresti di nuovo da capo :p
Originariamente inviato da prodan
La msdn l'ho guardata e non ho trovato nulla di buono.
Quindi ho chiesto a voi.
Se progettassi una dll potrei allora scambiare dati tra questi due eseguibili che la utilizzano?
Se si tratta di un sistema del genere:
exe1:
lancio exe2
attendo che sia finito exe2
prendo i dati elaborati da exe2
allora l'ideale è il file
Se la situazione è questa:
exe1:
lancio exe2
finoa d un certo evento: prendo i dati elaborati in tempo reale da exe2
Allora ci sono tante strade percorribili...SendMessge non è certo l'ideale...
Ci sono sia i file, una soluzione semplice:
FILE di lock
FILE dati
exe1:
apro il file di lock in modo esclusivo
se non lo posso aprire riprovo continuamente
quando l'ho aperto:
se c'è scritto 1 allora prendo i dati dal file dati e losvuoto
scrivo uno 0 nel file di lock e lo chiudo
exe2:
apro il file di lock in modo esclusivo
se non lo posso aprire riprovo continuamente
quando l'ho aperto:
se c'è scritto 0 allora scrivo nuovi dati nel file dati
scrivo un 1 nel file di lock e lo chiudo
In questo modo l'unico problema sono le attese attive sullo sblocco del file (si può ovviare a questo con una mutex con nome)... Guardate le API CreateMutex e WaitForSingleObject...
Altrimenti ci sono tante di quelle strade, ma sono molto complicate...
Ad esempio pipe, mailslot e altre...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.