Ouvrir un fichier avec un programme [Résolu]

cs_mathmax 404 Messages postés vendredi 28 octobre 2005Date d'inscription 31 août 2008 Dernière intervention - 16 juin 2006 à 13:34 - Dernière réponse : cs_mathmax 404 Messages postés vendredi 28 octobre 2005Date d'inscription 31 août 2008 Dernière intervention
- 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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 16 juin 2006 à 17:11
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

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Meilleure réponse
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 16 juin 2006 à 19:00
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" );

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de Lutinore
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 16 juin 2006 à 13:46
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
cs_mathmax 404 Messages postés vendredi 28 octobre 2005Date d'inscription 31 août 2008 Dernière intervention - 16 juin 2006 à 16:56
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
cs_mathmax 404 Messages postés vendredi 28 octobre 2005Date d'inscription 31 août 2008 Dernière intervention - 16 juin 2006 à 17:18
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
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 16 juin 2006 à 17:37
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
cs_mathmax 404 Messages postés vendredi 28 octobre 2005Date d'inscription 31 août 2008 Dernière intervention - 16 juin 2006 à 18:04
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
cs_mathmax 404 Messages postés vendredi 28 octobre 2005Date d'inscription 31 août 2008 Dernière intervention - 16 juin 2006 à 18:30
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
cs_mathmax 404 Messages postés vendredi 28 octobre 2005Date d'inscription 31 août 2008 Dernière intervention - 16 juin 2006 à 19:11
0
Merci
merci beaucoup. Dans mon cas ça marche en tout cas !

Mathmax
Commenter la réponse de cs_mathmax

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.