|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
[VB] Funzione shell ma ....
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à ????? |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Apr 2000
Messaggi: 138
|
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. Codice:
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
__________________
fgmac |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:16.