|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
[VB] Richiamo funzione di sistema "Shell": s'accorge di mancate esecuzioni?
Nell'esempio di codice sottostante:
Codice:
Shell("C:\Programmi\mio_prg.exe -SYSIN '" & Nome_pgm & "' -LOG 'C:\mio_log.log' -NOSPLASH -ICON", AppWinStyle.NormalFocus, True)
IMHO no, di cosa s'accorge "Shell" e di cosa no?
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Mmmm forse bisogna passare attraverso a queste cose:
http://msdn.microsoft.com/it-it/libr...exception.aspx http://msdn.microsoft.com/it-it/library/5eyd0ba7.aspx http://msdn.microsoft.com/it-it/library/8a9f2ew0.aspx
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 10-06-2009 alle 10:56. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Usare la Shell è obbligatorio solo in VB6 / VBA. Se come penso stai usando VB.NET hai a disposizione uno strumento più potente e facile da usare :
System.Diagnostics.Process() Puoi lanciare processi ( exe o files che richiamano l'exe registrato nel sistema per l'esecuzione ) esterni, monitorarli nel tempo, chiuderli ecc... Ad es.: Codice:
Dim P As New System.Diagnostics.Process()
P.StartInfo.FileName = percorso & nomeFileExe
P.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal
P.StartInfo.ErrorDialog = True
P.Start()
P.WaitForExit()
MsgBox(P.ExitCode)
MsgBox(P.ExitTime)
In alternativa posso omettere WaitForExit(), creare un semplice Timer che interroga periodicamente lo stato di esecuzione : Codice:
If P.HasExited Then
'...
'...
MsgBox(P.ExitCode)
MsgBox(P.ExitTime)
End If
Tornando alla Shell, monitorare lo stato del processo dopo il lancio è più laborioso... Una tecnica possibile è anche qui un Timer che interroga la lista dei processi attivi... In ogni caso Shell è un sistema molto più spinto verso l'operazione asincrona, e molto più slegato dall'applicazione che lo chiama, di quanto non sia System.Diagnostics.Process(). |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Per fare il fork del C? Ovvero far nascere un processo figlio completamente indipendente dal padre?
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Il processo creato se ne andrà per i fatti suoi, che produca errori o meno, non interferirà con l'applicazione... |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:27.



















