ShellExecute et attente de la fin d’exécution du programme

Codes specifiques à Windows
NY152
Messages : 148
Inscription : dim. 14/mai/2006 20:41

ShellExecute et attente de la fin d’exécution du programme

Message par NY152 »

Bonjour,

J'utilise l'API ShellExecute pour lancer un programme. Le choix de ShellExecute a été motivé par le fait que l'on peut, avec lui, lancer le programme avec les privilèges administrateur (impossible avec RunProgram(), et avec CreateProcess je n'ai rien trouver sur l'élévation non plus et ça complique pas mal le code aussi j'ai l'impression).

Seulement voilà avec ShellExecute, je ne trouve pas comment lancer mon programme et en attendre la fin d'exécution avant de poursuivre. Je n'ai rien trouvé la dessus ; Tous les ShellWait-Like que j'ai pu trouver sur le net, tous étaient basés sur RunProgram().

Quelqu'un pourrait-il m'aider, m'aiguiller (et aussi me corriger si je dis des âneries lol)

D'avance, merci :)
.:NY152:.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: ShellExecute et attente de la fin d’exécution du program

Message par nico »

Code : Tout sélectionner

lpExecInfo.SHELLEXECUTEINFO
lpExecInfo\cbSize  = SizeOf(SHELLEXECUTEINFO)
lpExecInfo\lpFile = @"Notepad.exe"
lpExecInfo\fMask=#SEE_MASK_DOENVSUBST | #SEE_MASK_NOCLOSEPROCESS | #SEE_MASK_FLAG_NO_UI 
lpExecInfo\hwnd = #Null
lpExecInfo\lpVerb = @"runas"
lpExecInfo\lpParameters = #Null 
lpExecInfo\lpDirectory = #Null   
lpExecInfo\nShow = #SW_SHOW

ShellExecuteEx_(@lpExecInfo)
    
If lpExecInfo\hProcess <> #Null
  
  Select WaitForSingleObject_(lpExecInfo\hProcess, #INFINITE)
    Case #WAIT_OBJECT_0
      Debug "Fin"
      
    Default
      Debug "Erreur Objet non signalé"
      
  EndSelect
  
  CloseHandle_(lpExecInfo\hProcess)
  
Else
  Debug "Erreur Process non lancé"
EndIf  
Edit: code mis à jour
NY152
Messages : 148
Inscription : dim. 14/mai/2006 20:41

Re: ShellExecute et attente de la fin d’exécution du program

Message par NY152 »

Merci, le code fonctionne très bien :)

Juste une chose qui m'étonne, le debug renvois 2 valeurs quand je lance le bloc-notes : Quand je ferme le bloc-notes il me renvois Fin, normal mais aussi Erreur Process non lancé tout de suite derrière. Mais bon comme ça fonctionne, j'y regarderais plus tard :)

Encore merci !
.:NY152:.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: ShellExecute et attente de la fin d’exécution du program

Message par Backup »

NY152 a écrit : Quand je ferme le bloc-notes il me renvois Fin, normal mais aussi Erreur Process non lancé tout de suite derrière.
pas sur mon seven 64 bits compilé en 32 ou 64 bits.. :wink:
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: ShellExecute et attente de la fin d’exécution du program

Message par nico »

Cela fait lontemps que tu fait de la programmation?

Parce que ce que tu dis est tout simplement impossible, vu le code!
NY152
Messages : 148
Inscription : dim. 14/mai/2006 20:41

Re: ShellExecute et attente de la fin d’exécution du program

Message par NY152 »

En PB, je touche occasionnellement. Sinon l'erreur venait de PB lui-même, après un reboot, je n'ai plus eu l'erreur. Pourquoi ? Comment ? Ça j'en sais rien ^^

Donc tout est OK du coup !

Encore merci
.:NY152:.
Répondre