Fonction -> WaitForExit() [Résolu]

Signaler
Messages postés
36
Date d'inscription
vendredi 11 mai 2007
Statut
Membre
Dernière intervention
20 août 2009
-
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
-
Bonjour,

Bon ben j'ai cherché dans le forum, mais je n'ai pas trouvé mon bonheur. Mon problème c'est que je n'arrive pas à utiliser la fonction "WaitForExit()" de "System.Diagnostics.Process".
Voila mon code :

                    Process proc = new Process();
                    ProcessStartInfo startInfo = new ProcessStartInfo(fichiers[a]);
                    proc.StartInfo = startInfo;
                    proc.Start();
                    proc.WaitForExit(); <- l'erreur se produit ici !

Voila l'erreur :

Aucun processus n'est associé à cet objet.

Donc pour récapituler je lance un processus avec "proc.start()", mais je n'arrive pas à faire en sorte qu'on n'attende que se processus soit terminé avant de passer à la suite.

5 réponses

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
28
Bonjour,
étrange cela devrait fonctionner, en tout cas le code suivant fonctionne parfaitement:

foreach (
string file
in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures),"*.jpg"))
{
  Process proc =
new Process();
  ProcessStartInfo startInfo =
new ProcessStartInfo(file);
  proc.StartInfo = startInfo;
  proc.Start();
  proc.WaitForExit();
}

Quelle application est associée à tes images ?

cela pourrait venir de là, car sans précision supplémentaire, le processus créé va lancer l'application associée au verbe "Open" associé à l'extention du fichier.
Tu peux peut être essayer de forcer l'application ?

ex :
ProcessStartInfo startInfo =
new ProcessStartInfo(@"C:\Program Files\Internet Explorer\iexplore.exe",file);

C# is amazing, enjoy it!
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
Le process ne se lance pas... et dans ce cas, il faut voir du coté du ProcessStartInfo...

Es-tu sûr que le programme se lance vraiment ?

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
36
Date d'inscription
vendredi 11 mai 2007
Statut
Membre
Dernière intervention
20 août 2009

Si si le process se lance, je lance une image elle s'affiche bien, mais moi ce que je veux c'est en lancer plusieurs mais pas en même temps dès qu'on en ferme la prochaine se lance.
Messages postés
36
Date d'inscription
vendredi 11 mai 2007
Statut
Membre
Dernière intervention
20 août 2009

ça marche presque à 100%,

Merci Robert33 j'ai essayé ta première partie du code (le foreach) mais j'ai eu exactement la même erreur, par contre ensuite j'ai remplacé :
-> ProcessStartInfo startInfo =
new ProcessStartInfo(file);
par
->
ProcessStartInfo startInfo =
new ProcessStartInfo(@"C:\Program Files\Internet Explorer\iexplore.exe",file);

et là ça a marché, ça a donc bien ouvert mon image avec internet explorer puis ça a bien attendu que je ferme l'image avant d'afficher la suivante, donc maintenant pour que mon problème soit résolu à 100% il faudrait que je puisse l'ouvrir avec la visionneuse de windows.
J'ai fait quelques recherches rapides mais je n'ai pas trouvé ou se trouve le ".exe" qui lance cette visionneuse enfin si c'est bien un ".exe" .
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
28
Bonsoir,
Contents de t'avoir rendu service.

La visioneuse de Windows est une DLL 'shimgvw.dll'

Pour l'utiliser, essayes la commande suivante :
rundll32.exe %SystemRoot%\system32\shimgvw.dll,ImageView_Fullscreen CheminCompletDuFichier

Attention à la syntaxe, "ImageView_Fullscreen" est casse sensitif, et surtout ne pas mettre les guillemets pour l'emplacement du nom du fichier.

je n'ai pas essayé depui du code, mais àa devrait le faire.

A+
C# is amazing, enjoy it!