Ouvrir un fichier avec un programme [Résolu]

Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
- - Dernière réponse : cs_mathmax
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
- 16 juin 2006 à 19:11
Bonjour,

J'aimerais savoir
si il est possible, à partir de C#, d'ouvrir  un fichier avec un
programme qui n'est pas le programme par défaut ? Par exemple ouvrir un fichier .doc avec le bloc-note alors que word est le programme par défaut. Est-ce possible ?
Mathmax
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
37
3
Merci
Salut,
Tu peux peut-être utiliser la méthode WaitForInputIdle de l'object Process...
A vrai dire je n'ai jamais essayé, donc je suis ne suis pas sur de ce qu'elle fait.

<hr size= "2" /> VC# forever
=13319

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Bidou
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
27
3
Merci
Pas sûr que ce soit imparable mais ça semble fonctionner correctement :

if ( Process.GetProcessesByName( "Notepad" ).Length > 0 )
    MessageBox.Show( "Notepad est déja ouvert" );

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
27
0
Merci
Salut, c'est possible, suffit de passer en paramètre le fichier à ouvrir dans la surcharge de la méthode Process.Start mais faut il encore que le programme soit capable d'ouvrir le fichier en question.. Notepad ne sait pas lire les fichiers *.doc

System.Diagnostics.Process.Start( "wordpad.exe", "C:\\file.doc" );
Commenter la réponse de Lutinore
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
0
Merci
Merci ça marche. L'exemple des fichiers .doc était mal choisi en effet. Je cherchais en fait à ouvrir des page html dans Opera qui n'est pas mon navigateur par défaut. Le problème que j'ai maintenant est qu' Opera envoi un message d'erreur quand je demande à la suite plusieurs ouverture de fichiers .html avec Process.Start. Opera refuse en effet de s'ouvrir plusieurs fois afin d'éviter d'avoir plusieurs pages ouvertes en même temps. En fait ce qu'il faudrait c'est ouvrir le navigateur, attendre qu'il soit bien ouvert, puis lançer les applications les unes à la suite des autres. Une fois que le navigateur est bien ouvert, lancer plusieurs ouverture de fichier avec Process.Start ne pose pas de problème. Les fichiers s'ouvrent alors à chaque fois dans un nouvel onglet. J'ai pu le tester en éxécutant le programme en le débugant et en attendant suffisament mais j'aimerais que mon programme détècte automatiquement quand Opera est bien ouvert (qu'il se mette en pose pendant son chargement). Est-ce possible ?

Mathmax
Commenter la réponse de cs_mathmax
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
0
Merci
J' ai essayé et j'obtiens le message d'erreur suivant :

Error    1    Static member 'System.Diagnostics.Process.Start(string)' cannot be accessed with an instance reference; qualify it with a type name instead    D:\Mes documents\Visual Studio 2005\Projects\ViewOrkosNews\ViewOrkosNews\Form1.cs    18    13    ViewOrkosNews

voici mon bout de code :
          
Process lancementOpera = new Process();
lancementOpera.Start(@"C:\Program Files\Opera\Opera.exe");

Je comprends pas ce que celà veux dire...

Mathmax
Commenter la réponse de cs_mathmax
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
27
0
Merci
Je pense aussi qu'il faut essayer avec WaitForInputIdle.

Tu utilises une méthode statique avec une instance de Process !!
Commenter la réponse de Lutinore
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
0
Merci
ok j'ai compris. Il n'accèpte pas une instance de la classe. Je corrige en faisant comme celà :
            Process lancementOpera = new Process();
            lancementOpera.StartInfo.FileName = @"C:\Program Files\Opera\Opera.exe";
            lancementOpera.Start();

Mathmax
Commenter la réponse de cs_mathmax
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
0
Merci
Dernière chôse : est-il possible de tester si opera est déjà ouvert ?

Mathmax
Commenter la réponse de cs_mathmax
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
0
Merci
merci beaucoup. Dans mon cas ça marche en tout cas !

Mathmax
Commenter la réponse de cs_mathmax