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 :

Associé une extension


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Aimons les animaux, il nous le rendent bien...
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Aimons les animaux, il nous le rendent bien...

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Associé une extension
    Bonjour,

    J'ai crée un petit traitement de texte en VB.NET et j'aimerais que les fichiers .wwrt (fichier du logiciel) s'ouvre dans mon RichTextBox quand je clique sur le fichier dans l'explorateur de fichier. J'ai fais des recherches sur Internet, mais rien de bien probant.

    Merci

  2. #2
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Tu as donc, si je comprends bien, un fichier d'extension .wwrt et aussi un programme que tu as écrit, qui a l'extension .exe, et tu souhaites que le double-clic d'un fichier .wwrt provoque son ouverture par ton programme.

    S'il en est ainsi, il faut "dire" au système quel programme doit ouvrir de type de fichier, c'est justement ta question.

    Vois la video : https://www.dropbox.com/s/5fe3ti2z1k...nsion.mp4?dl=0

    Voici la séquence illustrée dans la video :
    1. dans l'explorateur, clic droit sur un fichier .wwrt,
    2. dans le menu contextuel, choisir "Ouvrir avec ..."
    3. la boîte de dialogue qui s'ouvre ne propose pas ton programme : choisir "Autres options ... "
    4. cocher "Utiliser cette application pour tous les fichiers .wwrt
    5. descendre au bas de la liste des programme et cliquer "rechercher une autre application sur ce PC"
    6. parcourir les unités/dossiers jusqu'à ton programme
    7. sélectionner et ouvrir ton programme (ou double-clic).



    Bonne journée ...

  3. #3
    Membre éclairé Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 667
    Points
    667
    Par défaut
    Salut,
    Si tu utilises ClickOnce pour déployer ton application, tu peux créer des associations en modifiant le manifeste selon la syntaxe appropriée.
    Bonne journée
    Merci de ainsi que d'utiliser les boutons et

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Aimons les animaux, il nous le rendent bien...
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Aimons les animaux, il nous le rendent bien...

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Je pense que mon intitulé n'est pas clair. En faites, le contenue du ficgiers .wwrt doit s'ouvrir dans le richtextbox de mon logiciel. J'ai trouvé le code à mettre dans l'editeur registre mais je ne connait pas le code pour que le fichier s'ouvre dans le richtextbox. Sinon, merci d'avoir pris la peine de faire une vidéo

    Sinon, je n'utilise pas ClickOnce.

  5. #5
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Re ...

    J'ai compris

    Au démarrage d'un programme EXE, une liste d'arguments de ligne de commande lui est fournie. C'est liste vide quand il n'y a pas d'argument.

    Il possible d'appeler NotePad.exe MonFichier.TXT. NotePad reçoit alors le nom et le chemin complet du fichier à traiter. Parce que l'association a été faite, le double-clic d'un fichier TXT provoque l'ouverture du NotePad en lui passant comme argument, le nom et le chemin complet du fichier cliqué.

    J'ai donc fait la même chose avec un programme nommé Extensions.exe qui a été désigné pour ouvrir les fichiers .XYZ.

    Vois la video : https://www.dropbox.com/s/hkur3i3g72...ions2.mp4?dl=0

    Je peux taper en ligne de commande Extensions.exe FichierXYZ.XYZ.
    Dans l'exlporateur, je peux glisser le fichier FichierXYZ.XYZ sur Extensions.exe (ce qui signifie ouvrir avec ...).
    Et je peux double-cliquer le FichierXYZ.XYZ.

    Tu le constateras en regardant la vidéo, cette dernière façon de faire pose un problème 'Caractère illégal ...'. Mais là, je n'ai plus de temps pour chercher à résoudre ce détail.

    Voici le code de mon programme Extensions.EXE. J'espère que ceci te mettra sur la piste.

    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
     
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim Arguments() As String = Microsoft.VisualBasic.Command.Split(" ")
            If Arguments(0) <> String.Empty Then
     
                MessageBox.Show(Arguments(0))
     
                Dim FichierALire As New System.IO.StreamReader(Arguments(0).Trim, System.Text.Encoding.Default, False)
     
                Do Until FichierALire.Peek = -1
                    RichTextBox1.AppendText(FichierALire.ReadLine())
                Loop
     
                FichierALire.Close()
                FichierALire.Dispose()
            End If
        End Sub
    End Class

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Aimons les animaux, il nous le rendent bien...
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Aimons les animaux, il nous le rendent bien...

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Lapremier partie du code fonctionne !!! Mais aprés le Message box, j'ai sa :

    Nom : Capture d’écran 2021-07-06 131818.png
Affichages : 242
Taille : 26,7 Ko


    Voici le détail :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    Consultez la fin de ce message pour plus de détails sur l'appel du débogage
    juste-à-temps (JIT) à la place de cette boîte de dialogue.
     
    ************** Texte de l'exception **************
    System.ArgumentException: Caractères non conformes dans le chemin d'accès.
       à System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
       à System.IO.Path.GetFileName(String path)
       à System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
       à System.Windows.Forms.RichTextBox.LoadFile(String path, RichTextBoxStreamType fileType)
       à Wolfy_Writer_2021.Home.Home_Load(Object sender, EventArgs e) dans C:\Users\adrie\source\repos\Wolfy Writer 2021\Wolfy Writer 2021\Home.vb:ligne 149
       à System.EventHandler.Invoke(Object sender, EventArgs e)
       à System.Windows.Forms.Form.OnLoad(EventArgs e)
       à System.Windows.Forms.Form.OnCreateControl()
       à System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       à System.Windows.Forms.Control.CreateControl()
       à System.Windows.Forms.Control.WmShowWindow(Message& m)
       à System.Windows.Forms.Control.WndProc(Message& m)
       à System.Windows.Forms.Form.WmShowWindow(Message& m)
       à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
     
     
    ************** Assemblys chargés **************
    mscorlib
        Version de l'assembly*: 4.0.0.0
        Version Win32*: 4.8.4390.0 built by: NET48REL1LAST_C
        CodeBase*: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
    ----------------------------------------
    Wolfy Writer 2021
        Version de l'assembly*: 1.0.0.0
        Version Win32*: 1.0.0.0
        CodeBase*: file:///C:/Users/adrie/source/repos/Wolfy%20Writer%202021/Wolfy%20Writer%202021/bin/Debug/Wolfy%20Writer%202021.exe
    ----------------------------------------
    Microsoft.VisualBasic
        Version de l'assembly*: 10.0.0.0
        Version Win32*: 14.8.4161.0 built by: NET48REL1
        CodeBase*: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
    ----------------------------------------
    System
        Version de l'assembly*: 4.0.0.0
        Version Win32*: 4.8.4360.0 built by: NET48REL1LAST_C
        CodeBase*: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Core
        Version de l'assembly*: 4.0.0.0
        Version Win32*: 4.8.4390.0 built by: NET48REL1LAST_C
        CodeBase*: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
    ----------------------------------------
    System.Windows.Forms
        Version de l'assembly*: 4.0.0.0
        Version Win32*: 4.8.4390.0 built by: NET48REL1LAST_C
        CodeBase*: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System.Drawing
        Version de l'assembly*: 4.0.0.0
        Version Win32*: 4.8.4390.0 built by: NET48REL1LAST_C
        CodeBase*: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System.Configuration
        Version de l'assembly*: 4.0.0.0
        Version Win32*: 4.8.4341.0 built by: NET48REL1LAST_C
        CodeBase*: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Xml
        Version de l'assembly*: 4.0.0.0
        Version Win32*: 4.8.4161.0 built by: NET48REL1
        CodeBase*: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Runtime.Remoting
        Version de l'assembly*: 4.0.0.0
        Version Win32*: 4.8.4161.0 built by: NET48REL1
        CodeBase*: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
    ----------------------------------------
    System.Windows.Forms.resources
        Version de l'assembly*: 4.0.0.0
        Version Win32*: 4.8.4161.0 built by: NET48REL1
        CodeBase*: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_fr_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------
    mscorlib.resources
        Version de l'assembly*: 4.0.0.0
        Version Win32*: 4.8.4161.0 built by: NET48REL1
        CodeBase*: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_fr_b77a5c561934e089/mscorlib.resources.dll
    ----------------------------------------
     
    ************** Débogage JIT **************
    Pour activer le débogage juste-à-temps (JIT), le fichier de configuration pour cette
    application ou cet ordinateur (machine.config) doit avoir la valeur
    jitDebugging définie dans la section system.windows.forms.
    L'application doit également être compilée avec le débogage
    activé.
     
    Par exemple*:
     
    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
     
    Lorsque le débogage juste-à-temps est activé, les exceptions non gérées
    seront envoyées au débogueur JIT inscrit sur l'ordinateur
    plutôt que d'être gérées par cette boîte de dialogue.

  7. #7
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Je l'ai !!! C'était vraiment con ...

    Les "Caractères non conformes dans le chemin d'accès" sont des guillemets placés de part et d'autre de l'argument lorsqu'on procède par double-click du fichier.
    Il suffit donc d'enlever ces guillemets et le programme se comporte alors avec les fichiers .XYZ comme le NotePad avec les fichiers .TXT.

    Voici le code avec la suppression des éventuels guillemets gênants.

    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
     
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim Arguments() As String = Microsoft.VisualBasic.Command.Split(" ")
            If Arguments(0) <> String.Empty Then
     
                Dim FichierALire As New System.IO.StreamReader(Arguments(0).Trim(""""), System.Text.Encoding.Default, False)
     
                Do Until FichierALire.Peek = -1
                    RichTextBox1.AppendText(FichierALire.ReadLine())
                Loop
     
                FichierALire.Close()
                FichierALire.Dispose()
            End If
        End Sub
    End Class
    Très bonne soirée ...

  8. #8
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    En fait tu veux créer l'association de ton extension de fichier au programme que tu as développé, donc créer programmatiquement l'association de fichier. Voilà le billet qui pourrait te mettre sur la bonne piste :
    https://docs.microsoft.com/fr-fr/win...p-registration

    En complément de cet article :

    1- Savoir si l'association doit être valable pour tous les utilisateurs utilisant le PC ou seulement pour chaque utilisateur indépendamment
    2- Il faut que ton programme (le binaire que tu as générés) soit installé à un emplacement du PC de l'utilisateur qui ne changera pas (ex : C:\Program Files\DossierDeTonAppli\BinaireDeTonAppli.exe)
    3- Le nom de ton binaire et le chemin doit toujours être le même puisqu'il va être requis plus bas
    4- L'inscription se fera dans la base de registre. Pour une association pour l'utilisateur courant on utilise HKCU et pour tous les utilisateurs c'est HKLM

    A toi de prévoir les routines pour créer des clés et valeur dans la BDR.
    Il coule de source que ton binaire doit être codé de manière à ce que le point d'entrée Main (command line argument) gère le fichier avec l'extension afin de te permettre l'affichage dans ton composant RichTextBox !

    Bon codage++

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/09/2011, 16h42
  2. Associer une extension de fichier à une application
    Par Cecile5 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 12/12/2010, 13h58
  3. Réponses: 1
    Dernier message: 30/07/2010, 10h15
  4. Réponses: 4
    Dernier message: 19/12/2006, 11h46
  5. [windows]associer une extension à un exécutable ..
    Par peppena dans le forum Windows
    Réponses: 2
    Dernier message: 01/06/2004, 18h25

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