IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Ouvrir un fichier avec une autre application


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut Ouvrir un fichier avec une autre application
    Re-bonjour,
    Suite a mon problème de MainWindowHandle (résolu un peu avant ce post), je me retrouve confronté à un 2e soucis. Mon but final est de créer un programme qui permet de lancer une seule instance d'un autre programme externe à mon entreprise. Pour cela, j'ai créer un "écran" qui se lance, vérifie si il existe une instance du programme dont on veux limiter le nombre d'instance, et si il en détecte une l'affiche a l'écran au lieu d'en ouvrir une deuxième. Cette partie est faite.

    Mon problème se situe au niveau de l'ouverture d'un fichier, rien de vaut mieux qu'un bon exemple :
    Le programme "a" est mon programme (lanceur du programme "b")
    Le programme "b" est le programme dont on doit limiter le nombre d'instances a 1.
    Le fichiers "c" est un fichier que l'on ouvre avec le programme "b".

    Comment dois-je m'y prendre pour ouvrir le fichier "c" en lançant le programme "b" a partir du "a".

    En plus simple, comment puis-je passer le nom de fichier "c" au programme "a" afin qu'il le transmette du même au programme "b" qui l'ouvrira.

    Je n'ai aucune piste et n'ai rien trouvé sur le web qui permettrait de passer un paramètre à la méthode "Form_Load" d'une application.

    Merci par avance à ceux qui pourront m'aider.

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Modifie l'association du type de fichier pour pointer non plus sur par exemple "Word", mais sur ton programme.

    Dans les args[] reçus par ma fonction main() qui se trouve dans Program.cs, tu vas récupérer :
    - Le nom du fichier à ouvrir
    - L'action à lui faire desssus (open, print, etc.)

    Reste plus qu'à :
    - vérifier que le programme ne tourne pas déjà
    => Et le lancer en lui passant les paramètres que t'as reçu tel quel
    - s'il tourne déjà, pleurer jusqu'à ce que t'arrive à lui faire ouvrir le fichier (ou l'imprimer, etc.)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut
    Merci de ta réponse, et désolé pour le temps qu'a prit la mienne. Cela fonctionne, si le programme tourne, il m'ouvre le fichier comme si j'avais demander un nouveau document. Mon problème se situe maintenant ailleurs, pour garder l'instance en cours du programme et pouvoir la ré-ouvrir à tout moment, j'ai écrit le handle dans un fichier que je consulte à l'ouverture du programme, le problème est que si j'essaie de le lancer depuis un autre répertoire, il me créer un nouveau fichier dans le répertoire d'où il est lancé et m'indique que le fichier étant utilisé par une autre application, impossible d'y écrire. Y'a t'il un moyen d'éviter cela et de faire en sorte que le programme soit toujours depuis le répertoire ou il se trouve et non pas celui ou se trouve le fichier ?

    EDIT : Finalement non ça ne fonctionne pas j'avais pas stipuler à windows d'utiliser toujours mon programme pour lancer le typer de fichier correspondant, du coup il se servait juste de l'instance en cours pour afficher ce que je lui demandais d'ouvrir.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut
    En fait c'est bon, j'ai juste créer le fichier à la racine de l'application avec un chemin absolu au lieu de relatif du coup il n'en existe qu'un seul. Le seul problème restant à solutionner étant celui de la disponibilité du fichier.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut
    Suite à l'édition du post situé 2 posts plus haut, quand j'essaye d'ouvrir un fichier correspondant au programme que je suis censé lancer a partir du mien, windows m'ouvre 150000 de instance de mon programme sans jamais parvenir à lancer le programme qui me permettrait d'afficher le fichier sélectionné initialement. Quelqu'un aurait une idée qui pourrait me permettre de régler ce problème ?

    Merci d'avance.

Discussions similaires

  1. menu "ouvrir avec une autre application"
    Par alainbrest dans le forum Gnome
    Réponses: 1
    Dernier message: 20/12/2010, 18h57
  2. Comment ouvrir un fichier avec une application java ?
    Par chihaoui_med dans le forum Général Java
    Réponses: 3
    Dernier message: 05/11/2009, 13h58
  3. ouvrir un fichier avec une application avec system() ?
    Par supergrey dans le forum Linux
    Réponses: 7
    Dernier message: 03/05/2008, 09h04
  4. ouvrir un fichier avec une application quelconque
    Par madlozoz dans le forum Windows
    Réponses: 4
    Dernier message: 03/02/2008, 12h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo