Lancement d'exe par VB en synchrone

Lancement d'exe par VB en synchrone - VB/VBA/VBS - Programmation

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é)  :cry:  
 
Vous connaissez une méthode pour avoir du synchrone  :??:  
 
Ci d'av' ;)


---------------
Il suffit de me dire de me taire...
Reply

Marsh Posté le 05-12-2002 à 17:55:44   

Reply

Marsh Posté le 06-12-2002 à 09:54:20    

ca s'appelle un bide  [:dirakocha]


---------------
Il suffit de me dire de me taire...
Reply

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é.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

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.

Reply

Marsh Posté le 06-12-2002 à 12:17:06    

J'ai trouvé  :D  
 
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
 
 :sol:


---------------
Il suffit de me dire de me taire...
Reply

Marsh Posté le 09-12-2002 à 22:11:00    

oui mais ça, ça attend jusqu'à ce que tu aies fermé l'application lancée ?

Reply

Marsh Posté le 10-12-2002 à 08:29:58    

Tu as l'Api CreateProcess sinon :
 
http://www.listensoftware.com/Starting_Threads.htm

Reply

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  :heink:


---------------
Il suffit de me dire de me taire...
Reply

Marsh Posté le 10-12-2002 à 12:34:22    

:lol:
Depuis le début, je croyais que tu voulais lancer en asynchrone, d'ou ma réponse avec le Thread !!


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 10-12-2002 à 13:34:28    

Harkonnen a écrit :

:lol:
Depuis le début, je croyais que tu voulais lancer en asynchrone, d'ou ma réponse avec le Thread !!

bonjour, je m'appelle harko et je ne sais pas lire les titres des topics [:ddr555]


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed