Lancement d'exe par VB en synchrone - VB/VBA/VBS - Programmation
Marsh Posté le 06-12-2002 à 09:54:20
ca s'appelle un bide
Marsh Posté le 06-12-2002 à 10:13:46
j'ai jamais testé ShellExecute sous VB, mais je te conseillerai d'exécuter cette fonction dans un thread séparé.
Marsh Posté le 06-12-2002 à 10:26:13
ou encore d'utiliser le handle retourné par la fonction pour savoir (via les API) si le process lancé est encore actif. je connais pas les API nécessaires car je n'ai jamais tenté ça.
Marsh Posté le 06-12-2002 à 12:17:06
J'ai trouvé
v'al le code
Dim Handle As Long
Dim Retour As String
Dim ShellProg As SHELLEXECUTEINFO
Clipboard.Clear
Clipboard.SetText DocPath
With ShellProg
.cbSize = Len(ShellProg)
.fMask = SEE_MASK_NOCLOSEPROCESS
'le handle de l'appelant
.hwnd = Me.hwnd
'action d'ouverture/execution
.lpVerb = "open"
.lpParameters = ""
.lpFile = App.Path + "\" + "VB.exe"
.lpDirectory = App.Path + "\"
'le display
.nShow = SW_SHOW
End With
'lancement de l'exe externe
Handle = ShellExecuteEx(ShellProg)
If Handle = 0 Then
'erreur
Select Case ShellProg.hInstApp
Case SE_ERR_FNF
MsgBox "Error", vbCritical, "The file " + App.Path + "\" + "VB.exe was not found."
Case Else
MsgBox "Error", vbCritical, "An unexpected error occured."
End Select
LockDoc = False
Else
'boucle pour attendre que le process finisse
Do
DoEvents 'attente d'evenements externe
Handle = WaitForSingleObject(ShellProg.hProcess, 0)
Loop While Handle = WAIT_TIMEOUT
Retour = Clipboard.GetText
MsgBox "eokok", , "fini" + Retour
LockDoc = True
End If
Marsh Posté le 09-12-2002 à 22:11:00
oui mais ça, ça attend jusqu'à ce que tu aies fermé l'application lancée ?
Marsh Posté le 10-12-2002 à 08:29:58
Tu as l'Api CreateProcess sinon :
http://www.listensoftware.com/Starting_Threads.htm
Marsh Posté le 10-12-2002 à 09:47:41
couitchy a écrit : oui mais ça, ça attend jusqu'à ce que tu aies fermé l'application lancée ? |
c ce que je voulais
peut etre que je me suis mal exprimé au debut
Marsh Posté le 10-12-2002 à 12:34:22
Depuis le début, je croyais que tu voulais lancer en asynchrone, d'ou ma réponse avec le Thread !!
Marsh Posté le 10-12-2002 à 13:34:28
Harkonnen a écrit : |
bonjour, je m'appelle harko et je ne sais pas lire les titres des topics
Marsh Posté le 05-12-2002 à 17:55:44
alu
En VB, pour lancer un .exe je connais la commande Shell et l'api ShellExecute.
Le prob, c que ça lance en asynchrone ( le code vb apres le lancement se fait avant l'execution de l'exe appelé)
Vous connaissez une méthode pour avoir du synchrone
Ci d'av'
---------------
Il suffit de me dire de me taire...