Ouvrir un fichier avec un programme

Résolu
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008 - 16 juin 2006 à 13:34
cs_mathmax Messages postés 403 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

9 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
16 juin 2006 à 17:11
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
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
16 juin 2006 à 19:00
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" );
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
16 juin 2006 à 13:46
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" );
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
16 juin 2006 à 16:56
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
0

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

Posez votre question
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
16 juin 2006 à 17:18
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
16 juin 2006 à 17:37
Je pense aussi qu'il faut essayer avec WaitForInputIdle.

Tu utilises une méthode statique avec une instance de Process !!
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
16 juin 2006 à 18:04
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
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
16 juin 2006 à 18:30
Dernière chôse : est-il possible de tester si opera est déjà ouvert ?

Mathmax
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
16 juin 2006 à 19:11
merci beaucoup. Dans mon cas ça marche en tout cas !

Mathmax
0
Rejoignez-nous