fiko81
Messages postés381Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention 5 septembre 2010
-
26 nov. 2007 à 14:53
fiko81
Messages postés381Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention 5 septembre 2010
-
3 déc. 2007 à 14:49
Bonjour tout le monde,
Me revoilà avec une nouvelle question.
J'ai plusieurs kit d'installation à lancer pour une application modulaire.
Comment faire pour générer un setup global dans visual studio ; ou alors que faut-il faire pour exécuter un kit l'un après l'autre en attendant la fin respective de chaque kit ?
J'ai essayé avec un .bat mais ça lance tout les kit en même temps.
J'ai essayé avec Process.Start... idem.
Merci pour vos réponses.
Fiko ;-)
La reponse vous convient pensez > Accepter < <hr />
Je ne sais pas si cela t'aidera car cela ne correspond peut-être pas à ton problème et c'est du Vb6.0 mais l'idée est peut-etre transposable en VB.net
Comment lancer un programme de façon synchrone depuis un programme
VB? Comment attendre la fin de l'exécution d'un programme lancé depuis
VB?
Dans l'article 7 Comment exécuter un autre programme depuis une application VB ?,
on a présenté plusieurs façons simples de lancer un autre programme
depuis un programme VB. Dans les exemples présentés, les lancements se
faisaient de façon asynchrone, c'est à dire que le programme était
lancé depuis VB, puis le programme VB continuait son exécution.
On peut aussi vouloir lancer une application et attendre la fin de son
exécution pour continuer. On parle dans ce cas de lancement synchrone.
Pour cela, on utilise ShellExecute et les API OpenProcess et WaitForSingleObject .
La fonction suivante, "ShellWait", est un exemple d'implémentation de ceci :
Option Explicit
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long
Private Function ShellWait(ByVal vCommand As String) As Boolean
Dim mProcess As Long
Dim mRet As Long
Dim mPID As Long
Dim bRet As Boolean
On Error GoTo ShellWait_Error
mPID = Shell(vCommand, vbMinimizedNoFocus)
mProcess = OpenProcess(&H1F0FFF, 0, mPID)
Do
mRet = WaitForSingleObject(mProcess, 1000)
If mRet <> &H102& Then
bRet = True
Exit Do
End If
DoEvents
Loop
CloseHandle mProcess
ShellWait_OK:
On Error GoTo 0
Exit Function
ShellWait_Error:
bRet = False
Resume ShellWait_OK
End Function
La fonction ShellWait attend que l'application Command soit finie avant de continuer