PDA

View Full Version : [VB] Funzione shell ma ....


leon84
17-05-2005, 09:15
Salve,
devo lanciare un applicativo esterno al mio programma in VB..
Ho usato quindi l'istruzione "shell"

Il fatto è che fino a quando l'applicazione lanciata da shell non termini l'esecuzione del mio programma non deve passare all'istruzione successiva ... non deve cioè lavorare in modalità sincrona ...

Questo è quello che riporta MSDN tra le note :

Nota Per impostazione predefinita la funzione Shell consente di eseguire altri programmi in modo asincrono. Ciò significa che non è necessario attendere la fine dell'esecuzione di un programma avviato con Shell prima che possano essere eseguite le istruzioni che seguono la funzione Shell nell'applicazione.

Dice predefinita ... e come si imposta l'altra modalità ?????

fgmac
17-05-2005, 09:48
Non so se ho capito bene, ma puoi provare con questo codice che ti permette di analizzare anche il codice di ritorno dell'applicativo lanciato.
Devi usare un minimo di api.


Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long


'lancia un processo e ne attende la chiusura intercettando il codice di uscita
Function Shell32Bit(ByVal JobToDo As String) As Long
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, 0))
Do
GetExitCodeProcess hProcess, RetVal ' Get status of process
DoEvents
Sleep 100

Loop While RetVal = STILL_ACTIVE
Shell32Bit = RetVal
End Function

ciao,