Reprendre le focus après avoir lancer le manager picture OIS.EXE

Résolu
ROBIN1 - 17 déc. 2012 à 14:33
 ROBIN1 - 18 déc. 2012 à 10:17
Bonjour à tous
Je suis sous Visual studio 2005 et je lance MSO Picture Manager (OIS.EXE)depuis une boite de dialogue
qui sélectionne un fichier que je passe en argument.
Tout ce passe bien sauf qu'à la fermeture du Picture Manager je ne sait pas et ne trouve pas
comment quel évènement dans ma boite de dialogue me permettrait de reprendre la main
pour poursuivre automatiquement du code.
Pour le moment je suis obligé de redonné manuellement le focus à la boite de dialogue et de sélectionner
un bouton.

Merci d'avance de votre aide et bonnes fêtes à tous
 Robin

6 réponses

Utilisateur anonyme
17 déc. 2012 à 17:49
Bonjour,

Tu peux abonner ton process à l'événement 'Exited' comme ceci :
Dim MonProcess As Process = Process.Start("monprogramme.exe")
AddHandler MonProcess.Exited, AddressOf RepriseDeMain


Puis faire quelque chose dans ton code ensuite quand il se termine :
Private Sub RepriseDeMain(ByVal sender As Object, ByVal e As EventArgs)
  'ton code ici
  '...
End Sub
3
Merci d'une si prompte réponse que j'ai testé sans succès !
J'ai mis une MsgBox dans RepriseDeMain , mais jamais activée.

Je poursuis mes tentatives, merci en tout cas pour la piste ...

 Robin
3
D'être sur le bon chemin est quelquefois suffisant.

J'ai découvert et ajouter Monprocess.WaitForExit()
pour l'instant celà me convient

 Robin
3
Utilisateur anonyme
17 déc. 2012 à 19:18
sauf qu'à la fermeture du Picture Manager
Assure toi que le process est bien terminé (gestionnaire des tâches) car parfois, il se 'réduit à une icône' en barre des tâches.
Parce qu'il est dommage de 'geler' ton application pendant le WaitForExit().
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
18 déc. 2012 à 00:27
Je suis bien bête, j'ai oublié une ligne de code (oui il faut indiquer l'activation de l'événement)

Dim MonProcess As Process = Process.Start("monprogramme.exe")
AddHandler MonProcess.Exited, AddressOf RepriseDeMain
MonProcess.EnableRaisingEvents = True

'....

Private Sub RepriseDeMain(ByVal sender As Object, ByVal e As EventArgs)
  'ton code ici
  '... 
End Sub
3
Merci d'avoir persévéré dans ton assistance. J'avait mis en oeuvre cet attribut
mais sans doute mal positionné le code.

En testant ton nouvel envoi cela fonctionne parfaitement.
Merci encore

 Robin
3
Rejoignez-nous