Oppure

Loading
08/03/08 10:39
mitor
Ciao di nuovo a tutti,
questa volta ho un problema un pò più serio direi,sto diventando matto nel tentativo di importare ed eseguire un file .exe nel mio programma.
passiamo alla spiegazione dettagliata.
aggiungo un file esistente nel mio progetto (esplora soluzioni)
ora non deve essere compilato e quandi mandato nella cartella di esecuzione insieme agli altri...ma vorrei ,tramite codice..o pressione di un button..che il mio .exe integrato nel progetto venga eseguito...senza uscire però dalla mia applicazione.
ora non pensate male eh!
non devo fare niente di cattivo!
sto realizzando un bel programmone che se tutto rispetta la norma avvia il programma che dovrei integrarci!

il problema è che mi servirebbe una lezioncina su questo argomento.

cercando su Google ho trovato solo questo codice:
 Dim A As System.Reflection.Assembly
        Dim st As System.IO.Stream
        Dim bytearray As Byte()
        A = Reflection.Assembly.GetExecutingAssembly
        st = A.GetManifestResourceStream(nomespace.nomefile.exe")
        ReDim bytearray(CInt(st.Length) - 1)
        st.Read(bytearray, 0, CInt(st.Length))
        st.Close()

non mi dà eccezioni solamente che il programma non si apre...e non vedo come possa fare O_o
ho modificato il nome e il namespace per motivi personali..cmq spero che abbiate capito...non dovrebbe essere una cosa cosi difficile....altrimenti i programmi di installazione come farebbero ad integrarli dentro ed ad'eseguirli?

spero di essere stato sufficientemente chiaro...
Riepilogo:

-Importare il file .exe nel progetto (Fatto)
-Impostare "operazione di compilazione":
-Nessuno
-Compilazione
-Contenuto
-Risorsa Incorporata
-Application Definition
-Page
-Resource
(Non fatto)
come devo impostarlo?
dev'essere eseguito ma senza lasciare il mio programma principale.

Accetto ulteriori soluzione,basta che me ne postiate perchè sto uscendo pazzo!
aaa
08/03/08 14:13
Dark_Limit
Ciao..Potresti provare con programmai che convertano l'eseguibile in codice vb.net (ma mi pare che tali eseguibili devono essere necessariamente scritti in vb.net ! ! ) nn so tipo exe to vb.net..prova con google..anche se una è soluzione un po limitata!!:k:
Ultima modifica effettuata da Dark_Limit 08/03/08 14:15
aaa
08/03/08 15:00
mitor
Postato originariamente da Dark_Limit:

Ciao..Potresti provare con programmai che convertano l'eseguibile in codice vb.net (ma mi pare che tali eseguibili devono essere necessariamente scritti in vb.net ! ! ) nn so tipo exe to vb.net..prova con google..anche se una è soluzione un po limitata!!:k:

eh si,purtroppo non posso usare il tuo metodo..per prima cosa l'eseguibile non è in vb..poi cmq una decompilazione è possibile solo se il codice non è criptato...:-|
devo semplicemente riuscire dopo aver importato l'exe a farlo partire dal main form senza pubblicarlo....cioè,integrarlo nel mio eseguibile.. ^_^
aaa
08/03/08 16:08
Il Totem
Se non hai bisogno di usare tale programma per operazioni di Reflection, come ad esempio per sondarne i tipi, come tra l'altro sembrava fare il tuo esempio, forse sarebbe meglio usare un banale Process.Start per avviarlo. Quello che devi fare è solamente estrarre l'array di bytes dalle risorse del programma (cfr tuo codice), creare un file exe ed eseguirlo.
Se vuoi che il programma faccia parte dello stesso contesto d'esecuzione di quello principale puoi usare la classe Assembly, che però richiede comunque la presenza di un assembly compilato.
aaa
08/03/08 19:15
mitor
Postato originariamente da Il Totem:

Se non hai bisogno di usare tale programma per operazioni di Reflection, come ad esempio per sondarne i tipi, come tra l'altro sembrava fare il tuo esempio, forse sarebbe meglio usare un banale Process.Start per avviarlo. Quello che devi fare è solamente estrarre l'array di bytes dalle risorse del programma (cfr tuo codice), creare un file exe ed eseguirlo.
Se vuoi che il programma faccia parte dello stesso contesto d'esecuzione di quello principale puoi usare la classe Assembly, che però richiede comunque la presenza di un assembly compilato.

daccordo,se per caso trovi degli esempi,mi farebbe piacere vederli!
in caso contrario,stavo pensando a qualcosa di più semplice....mettiamo il caso che,modificando il mio exe...e tramite il mio form gli dò un input di qualche tipo per farlo partire?
ad'esempio rimuovere una parte di codice essenziale e con il programma andare a reinserirla solo nell'esecuzione....diciamo che senza questo programma l'exe non deve avviarsi da solo...hai qualche idea Totem?:d
oppure riuscire ad integrare in qualche modo il mio programma dentro l'altro .exe che però prenda il sopravvento nell'esecuzione ^_^
quindi che non partano entrambi insieme...
per favore,postate anche più di una soluzione o idea!
grazie attendo risposte!
Ultima modifica effettuata da mitor 08/03/08 19:18
aaa
09/03/08 8:12
Il Totem
Postato originariamente da mitor:

Postato originariamente da Il Totem:

Se non hai bisogno di usare tale programma per operazioni di Reflection, come ad esempio per sondarne i tipi, come tra l'altro sembrava fare il tuo esempio, forse sarebbe meglio usare un banale Process.Start per avviarlo. Quello che devi fare è solamente estrarre l'array di bytes dalle risorse del programma (cfr tuo codice), creare un file exe ed eseguirlo.
Se vuoi che il programma faccia parte dello stesso contesto d'esecuzione di quello principale puoi usare la classe Assembly, che però richiede comunque la presenza di un assembly compilato.

daccordo,se per caso trovi degli esempi,mi farebbe piacere vederli!
in caso contrario,stavo pensando a qualcosa di più semplice....mettiamo il caso che,modificando il mio exe...e tramite il mio form gli dò un input di qualche tipo per farlo partire?
ad'esempio rimuovere una parte di codice essenziale e con il programma andare a reinserirla solo nell'esecuzione....diciamo che senza questo programma l'exe non deve avviarsi da solo...hai qualche idea Totem?:d
oppure riuscire ad integrare in qualche modo il mio programma dentro l'altro .exe che però prenda il sopravvento nell'esecuzione ^_^
quindi che non partano entrambi insieme...
per favore,postate anche più di una soluzione o idea!
grazie attendo risposte!


Quello che hai detto non si può fare, ma si può creare il programma a runtime. Basta che ti salvi il codice come una variabile string e poi usi la classe VBCodeProvider per compilarlo. Se guardi i miei programmi TBench ed anche MGraphing si cono degli esempi.
aaa