View Full Version : [VB.NET] Eseguire file
Traxsung
16-08-2007, 19:29
Esiste in vb.net un comando come in vb (shell) per poter eseguire un programma esterno ??
System.Diagnostic.Process eseguibileDaLanciare = new System.Diagnostic.Process();
eseguibileDaLanciare.StartInfo.FileName = "Nome del file eseguibile da lanciare";
eseguibileDaLanciare.StartInfo.WorkingDirectory = "Percorso dell'eseguibile";
eseguibileDaLanciare.StartInfo.Arguments= "Parametri da passare all'eseguibile";
myprocess.Start();
il codice è C# perchè vb non mi è molto familiare, ci dovresti comunque perdere non più di 20 secondi per sistemarlo.
'iao
qwerty86
16-08-2007, 23:19
System.Diagnostics.Process.Start("percorso del programma")
Poi ovviamente ci sono tutti i vari parametri che puoi anche cercare da solo...
Traxsung
18-08-2007, 13:52
con questa funzione va che è una meraviglia.
come faccio ad intercettare se un programma è in esecuzione ?
qwerty86
18-08-2007, 14:19
con questa funzione va che è una meraviglia.
come faccio ad intercettare se un programma è in esecuzione ?
puoi usare System.Diagnostics.Process.Start("percorso del programma").waitexit() , o una cosa simile. Comunque quello che succede è che quando il programma esterno si è avviato il programma da cui lo hai avviato si bloccherà all'istruzione System.Diagnostics.Process.Start("percorso del programma").waitexit() aspettando che il programma eseguito venga chiuso. Quando è stato chiuso il programma andrà avanti
Traxsung
18-08-2007, 14:23
ho provato, ma .waitexit() non è un membro si System.Diagnostics.Process
ho provato anche a cercare su msdn ma nada...
How to enumerate currently executing processes in VB.NET (http://www.devasp.net/net/articles/display/195.html)
qwerty86
18-08-2007, 14:29
System.Diagnostics.Process.Start("patch dell'eseguibile").WaitForExit()
è questa la sintassi , non fa parte di process , ma di start :D
qwerty86
18-08-2007, 14:32
How to enumerate currently executing processes in VB.NET (http://www.devasp.net/net/articles/display/195.html)
Con questo puoi sapere i processi che sono in esecuzione, col mio metodo semplicemente puoi capire quando un programma che hai lanciato dal tuo programma(scusa il gioco di parole) è stato terminato.
Con questo puoi sapere i processi che sono in esecuzione, col mio metodo semplicemente puoi capire quando un programma che hai lanciato dal tuo programma(scusa il gioco di parole) è stato terminato.
sorry pensavo volesse sapere se un processo è già in esecuzione (magari lanciato da qualche altra applicazione o direttamente dall'utente) prima di lanciarlo dalla sua!
qwerty86
18-08-2007, 14:45
sorry pensavo volesse sapere se un processo è già in esecuzione (magari lanciato da qualche altra applicazione o direttamente dall'utente) prima di lanciarlo dalla sua!
Bhè nemmeno io ho capito cosa vuole sapere, comunque ora ha entrambe le risposte! :D
Traxsung
20-08-2007, 07:06
Ragazzi intanto grazie per le risposte.
Allora andiamo a noi. Girovagando per la rete ho trovato che esistono diversi modi per poter eseguire un programma:
1) System.Diagnostics.Process.Start("patch dell'eseguibile")
2) Shell("patch dell'eseguibile", AppWinStyle.NormalFocus)
Secondo voi qual'è il metodo migliore?
Inoltre ritornando alla mia seconda curiosità (che forse magari a causa di una mia non corretta esposizione non avete capito) come posso farsì che il programma una volta avviato, non venga avviato una seconda volta??
qwerty86
20-08-2007, 10:30
Inoltre ritornando alla mia seconda curiosità (che forse magari a causa di una mia non corretta esposizione non avete capito) come posso farsì che il programma una volta avviato, non venga avviato una seconda volta??
Allora fammi capire , da dove avvii il programma esterno? Da un bottone , da un pulsante nella barra dei menù...? Se è un cosa del genere potresti, nel codice del relativo pulsante, inserire l'istruzione che lo disabilita(in modo da non poterci cliccare) , poi lanciare il programma esterno con System.Diagnostic.Process.Star("patch").waiforexit() , in modo che qui il programma si ferma e solo quando viene chiuso eseguirà l'istruzione successiva , cioè quella di abilitare di nuovo il pulsante. Sono stato chiaro? :D
Traxsung
20-08-2007, 10:40
all'interno dell'evento click di un pulsante
ho fatto così:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
System.Diagnostic.Process.Star("patch").waiforexit()
Button1.Enabled = False
End Sub
End Class
percui non appena avvia il file (patch) il pulsante viene disabilitato.
Il problema e che per riabilitarlo dovrebbe attendere che il programma sia terminato (installazione conclusa, oppure chiusura del programma).
Per poter poter riabilitare il tasto pulsante e settare la proprietà enable = true
E far si che se si vuole installare nuovamente mandare un msgbox comunicando che il programma è già stato installato
qwerty86
20-08-2007, 10:45
all'interno dell'evento click di un pulsante
ho fatto così:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
System.Diagnostic.Process.Star("patch").waiforexit()
Button1.Enabled = False
End Sub
End Class
percui non appena avvia il file (patch) il pulsante viene disabilitato.
Il problema e che per riabilitarlo dovrebbe attendere che il programma sia terminato (installazione conclusa, oppure chiusura del programma).
Per poter poter riabilitare il tasto pulsante e settare la proprietà enable = true
E far si che se si vuole installare nuovamente mandare un msgbox comunicando che il programma è già stato installato
Se ho ben capito , devi lanciare un installer. Prima cosa l'enable deve stare prima e non dopo . perchè se lo fai dopo lo farà solo quando il programma esterno è stato "chiuso". Per quanto riguarda il messaggio , puoi semplicemente far restare disabilitato il tasto , visto che si tratta di un'istallazione è inuti che lo abiliti di nuovo. Non credi ?
Traxsung
20-08-2007, 10:48
beh...questo si
E' solo che sono precisino :P
qwerty86
20-08-2007, 10:56
beh...questo si
E' solo che sono precisino :P
A parte che come soluzione non è male , mi sembra inutile metterti a visualizzare un messaggio, quando puoi semplicemente disabilitare il pulsante. Altrimenti per verificare che il programma sia già installato dovresti vedere se è presente una voce nel registro di sistema! :D Ti conviene complicarti le cose quando ha già una buona soluzione?? :D
Traxsung
20-08-2007, 10:59
qwerty86...te l'ho mai detto che mi stai simpatico?? :D
Cmq scherzi a parte.... mi sa che adotterò la tua idea ^_^
Grazie
qwerty86
20-08-2007, 11:04
qwerty86...te l'ho mai detto che mi stai simpatico?? :D
Cmq scherzi a parte.... mi sa che adotterò la tua idea ^_^
Grazie
auhauahuh ehi sono fidanzato!!! :D :D
Cmq di niente!
qwerty86
20-08-2007, 11:04
Cmq per curiosità...cosa stai realizzando ?
Traxsung
20-08-2007, 11:05
mah, nulla di che. Mi sto avvicinando a VB.net e voglio documentarmi un po su tutto ^_^
qwerty86
20-08-2007, 11:06
mah, nulla di che. Mi sto avvicinando a VB.net e voglio documentarmi un po su tutto ^_^
Ti confesso che anche io mi sono avvicinato da poco, però dato che ormai programmo da molto tempo, mi viene un pò più facile. Tu programmi per studio o per hobbie??
Traxsung
20-08-2007, 11:07
rigorosamente per hobby
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.