Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Esecuzione .Exe Da Progetto [VB.Net]
Forum - C# / VB.NET - Esecuzione .Exe Da Progetto [VB.Net]

Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 11:39
Sabato, 08/03/2008
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:
Codice sorgente - presumibilmente VB.NET

  1. Dim A As System.Reflection.Assembly
  2.         Dim st As System.IO.Stream
  3.         Dim bytearray As Byte()
  4.         A = Reflection.Assembly.GetExecutingAssembly
  5.         st = A.GetManifestResourceStream(nomespace.nomefile.exe")
  6.        ReDim bytearray(CInt(st.Length) - 1)
  7.        st.Read(bytearray, 0, CInt(st.Length))
  8.        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!

PM Quote
Avatar
Dark_Limit (Ex-Member)
Expert


Messaggi: 220
Iscritto: 15/01/2008

Segnala al moderatore
Postato alle 15:13
Sabato, 08/03/2008
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 il 08/03/2008 alle 15:15
PM Quote
Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 16:00
Sabato, 08/03/2008
Testo quotato

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.. ^_^

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:08
Sabato, 08/03/2008
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.

PM Quote
Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 20:15
Sabato, 08/03/2008
Testo quotato

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 il 08/03/2008 alle 20:18
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:12
Domenica, 09/03/2008
Testo quotato

Postato originariamente da mitor:

Testo quotato

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.

PM Quote