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

VB.NET Discussion :

Ouvrir un fichier XML avec un programme réalisé en VB.NET


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut Ouvrir un fichier XML avec un programme réalisé en VB.NET
    Bonjour à tous.

    J'aimerais ouvrir un/des fichier(s) XML avec une extension autre que *.XML (je ne nais pas encore quelle extension mais ce n'est pas le problème).

    En fait j'aimerais que ce(s) fichier(s) s'ouvre(nt) directement dans mon logiciel lors d'un double clic, à l'image d'un *.doc qu'on ouvrirait avec word prêt à être édité.

    J'ai trouvé ce bout de code mais ce n'est pas la bonne approche à première vue... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Environment.CurrentDirectory.Count >= 2 Then
          Nom_Client = Ouverture_Fiche_Client(Environment.CurrentDirectory)
          LBL_Nom_Entreprise.Text = Nom_Client.Société.Nom
    End If
    Ce code est placé dans premièrefenêtre_load.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Pour afficher le fichier dans une TextBox multiline :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string ThePath="C:\\Dir1\\File1.xml" ; 
    string[] TheLines = System.IO.File.ReadAllLines(ThePath);
    string TheText="" ;
    foreach (string TheLine in TheLines) TheText+=(TheText==""?"":Environment.NewLine)+TheLine ;
    MyTextBox.Text=TheText ;
    Pour exploiter le contenu XML, utiliser la classe System.Xml.XmlDocument.
    voir par exemple : http://csharp.net-tutorials.com/xml/...document-class
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Bonjour et merci de votre réponse.

    Mais ce code est déjà fait pour ma part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     Function Ouverture_Fiche_Client(ByVal filename As String) As Client 'Créé la fonction lecture du fichier xml'
     
            Try 'Essaye le code suivant :'
                Using objStreamReader As New StreamReader(filename) 'Utilise le flux de données du fichier "filename"'
                    Try 'Essaye le code suivant : '
                        Return DirectCast((New XmlSerializer(GetType(Client))).Deserialize(objStreamReader), Client) 'Sérialise le fichier xml'
                    Catch ex As Exception 'Si l'essais échoue'
                        Erreur = True 'Met le booléen en valeur "vrai"' 
                        MessageBox.Show("Echec de la lecture." & ex.Message) 'Affiche un message d'erreur'
                    End Try 'Fin de l'essais du code'
                End Using 'Coupe toutes ressources utilisées pour créer le flux.'
            Catch ex As Exception 'Si le fichier n'existe pas'
                Erreur = True 'Met le booléen en valeur "vrai"'
                MessageBox.Show("Fichier inaccessible." & ex.Message) 'Affiche un message contenant l'erreur.'
            End Try 'Fin de l'essais du code'
            Return Nothing
     
        End Function
    Ce que je voudrais c'est récupérer le fichier qu'on exécute, mais pas par le logiciel, quand on ouvre un fichier txt on double clique dessus et il nous ouvre le bloc note prêt à éditer le fichier.

    C'est ce que je voudrais faire: ouvrir mon fichier XML et qu'il m'exécute mon programme.

    Donc récupérer un code du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Environment.CurrentDirectory.Count >= 2 Then
          Nom_Client = Ouverture_Fiche_Client(Environment.CurrentDirectory)
          LBL_Nom_Entreprise.Text = Nom_Client.Société.Nom
    End If
    en remplaçant CurrentDirectory par 'MonFichierXML' par exemple.

    J'espère que c'est un peut plus clair

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Pour orienter tes recherches, ta demande est plus :

    -> "associer une extension" à un programme.
    (Pour cela il faut aller écrire ce qu'il faut dans la base de registre ou le faire toi même via Windows (Ouvrir avec etc...))

    -> Après tu cherches à lancer le programme avec le chemin du fichier en paramètre, ça se fait aussi.

    Avec ces termes, tu trouveras facilement de infos.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Merci pour vos réponses.

    Pour ce qui est d'associer une extension au logiciel c'est pas le problème c'est au niveau de l'exécution, pour récupérer le fichier qu'on veux ouvrir (sur lequel on à préalablement double-cliqué donc).

    J'ai trouvé ce code que je me suis adapté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub Lecture_Fiche_Client_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            Try 'on gère les erreurs
                If My.Computer.Registry.ClassesRoot.OpenSubKey(".cli") Is Nothing Then
     
                    'si l'extension n'est pas encore associée, on l'associe.
                    associerExtension()
     
                End If
     
            Catch ex As Exception
                MsgBox("Oups, erreur") 'message très descriptif..
            End Try
     
            'on obtient les arguments, à savoir le nom du fichier avec lequel le prog s'est ouvert
            For Each argument As String In Environment.GetCommandLineArgs()
     
                If argument.Contains("cli") Then 'si il contient notre extension
     
                    'on affiche le chemin du fichier test1
                    Nom_Client = Ouverture_Fiche_Client(argument)
     
                End If
            Next
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Sub associerExtension()
     
            Dim extension As String = ".cli"
            Dim nomSansPoint As String = extension.Substring(1, extension.Length - 1) 'on aura uniquement cli
            Dim cheminFinalProgramme As String = "C:\Users\Patrick\Documents\Visual Studio 2013\Projects\Jestcli\Jestcli\bin\Debug"
     
            My.Computer.Registry.ClassesRoot.CreateSubKey(extension).SetValue("", nomSansPoint, Microsoft.Win32.RegistryValueKind.String)
            My.Computer.Registry.ClassesRoot.CreateSubKey(nomSansPoint & "\shell\open\command").SetValue _
                ("", cheminFinalProgramme & " ""%l"" ", Microsoft.Win32.RegistryValueKind.String)
     
        End Sub
    Mais il ne fonctionne pas !

    Je continue de chercher.

  6. #6
    Membre régulier Avatar de marcoxavier
    Homme Profil pro
    ADMINISTRATEUR SYSTEME UNIX
    Inscrit en
    Mai 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ADMINISTRATEUR SYSTEME UNIX

    Informations forums :
    Inscription : Mai 2015
    Messages : 72
    Points : 75
    Points
    75
    Par défaut
    Arrêtez moi si je dis une gros bêtise mais, si tu fais clique droit sur ton fichier XML, ouvrir avec et que de la tu selectionne ton programme en .exe, après quand tu va double cliquer sur le fichier XML, cela va ouvrir ton programme non?

    Cdt,

  7. #7
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    oui oui c'est ce que je dis ce n'est pas mon souci ^^ ce que je veux c'est l'ouvrir après :

    genre j'ai un fichier xml avec dedans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Nom_Label1 texte="hello word"/>
    je veux quand j'ouvre ce fichier de par ce fichier même (donc un double clic sur ce fichier) qu'il m'affiche dans mon label1 présent dans la form de mon programme, le texte "hello word".

    Comme si j'ouvrais mon fichier de par le programme en fait !

    et ça sa fonctionne pas et je ne sais pas comment faire.

  8. #8
    Membre régulier Avatar de marcoxavier
    Homme Profil pro
    ADMINISTRATEUR SYSTEME UNIX
    Inscrit en
    Mai 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ADMINISTRATEUR SYSTEME UNIX

    Informations forums :
    Inscription : Mai 2015
    Messages : 72
    Points : 75
    Points
    75
    Par défaut
    Je suis pas certain de comprendre, en gros tu veux que si dans ton fichier XML il à un label1 avec comme text hello world, il remplace ton label1 dans ton programme VB par "Hello world"?

    Cdt,

  9. #9
    Membre régulier Avatar de marcoxavier
    Homme Profil pro
    ADMINISTRATEUR SYSTEME UNIX
    Inscrit en
    Mai 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ADMINISTRATEUR SYSTEME UNIX

    Informations forums :
    Inscription : Mai 2015
    Messages : 72
    Points : 75
    Points
    75
    Par défaut
    Déjà peut-être faire trouver dans ton fichier XML le mot clé label1, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim lines() As String
    lines = System.IO.File.ReadAllLines("chemin du fichier")
    Dim value As String
    For Each line As String In lines
       If line.Contains("<Nom_Label1 texte=") Then
          ...
       End If
    Et une fois le mot clé trouvé, tu rempalce le label1 de form par la suite de "<Nom_Label1 texte=...", je me suis pas penché sur cela encore!

    Cdt,

  10. #10
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    En gros dans ma fenêtre principale j'ai un menu avec Fichier->Nouveau Client,Ouvrir Fiche Client,Enregistrer Client etc etc.

    J'ai ma fonction ouvrir client qui m’appelle ma procédure de lecture du fichier sélectionné et qui m'affiche les données dans ma fenêtre principale.

    Ce que je veux, c'est que lorsque je double clique sur une fiche client SANS avoir ouvert mon logiciel (donc sans passer par la fonction que j'ai dans mon Fichier->Ouvrir Fiche Client, mais que je double clique sur mon fichier qui se trouve dans un dossier C:/Dossier1/dossier2/etc... j'en sais rien de sa position mais lorsque je double clique dessus, je veux que ça m'ouvre mon logiciel (donc ça c'est bon clic droit ouvrir avec programme par défaut) MAIS aussi que ça me fasse comme si je faisait ouvrir fiche client (donc il me faut récuperer l'adresse du fichier lancé et la rentrer dans les paramètres de ma fonction ouvrir fiche client). Et c'est là que je ne trouve pas le code adéquat.

  11. #11
    Membre régulier Avatar de marcoxavier
    Homme Profil pro
    ADMINISTRATEUR SYSTEME UNIX
    Inscrit en
    Mai 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ADMINISTRATEUR SYSTEME UNIX

    Informations forums :
    Inscription : Mai 2015
    Messages : 72
    Points : 75
    Points
    75
    Par défaut
    Merci de ton explication, je viens de comprendre ce que tu voulais, seulement cela me parait assez compliquer. En gros il fraudais rajouter un code qui détecte lorsque le programme est ouvert par un autre fichier. Je fais quelques recherches et tests et je reviens vers toi !

    Cdt,

  12. #12
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Merci mais mon code était bon en fait c'est juste un point qu'il me manquais a mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For Each argument As String In Environment.GetCommandLineArgs()
     
                If argument.Contains(".cli") Then 'si il contient notre extension
     
                    'on affiche le chemin du fichier test1
                    Nom_Client = Ouverture_Fiche_Client(argument)
     
                End If
            Next
    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.2] Ouvrir un fichier video avec programme par défaut
    Par paidge dans le forum Langage
    Réponses: 4
    Dernier message: 29/03/2013, 11h35
  2. ouvrir un fichier xml en lecture avec silverlight 3
    Par rimenis dans le forum Silverlight
    Réponses: 3
    Dernier message: 07/05/2011, 14h20
  3. [XL-2000] Ouvrir un fichier xml avec excel
    Par kev159 dans le forum Excel
    Réponses: 2
    Dernier message: 27/02/2010, 15h15
  4. Ouvrir les fichiers png avec un autre programme
    Par fabou3377 dans le forum NetBeans
    Réponses: 1
    Dernier message: 18/01/2010, 14h04
  5. comment ouvrir un fichier XML avec excel
    Par ALCINA dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 24/03/2006, 14h42

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