VB 2010: Gérer les "ouvrir avec"
Résolu/Fermé
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
-
25 juil. 2014 à 19:57
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 29 juil. 2014 à 18:13
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 29 juil. 2014 à 18:13
A voir également:
- VB 2010: Gérer les "ouvrir avec"
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Clé activation office 2010 gratuit - Télécharger - Sécurité
- Telecharger word 2010 - Télécharger - Traitement de texte
- Microsoft office picture manager 2010 free download - Télécharger - Retouche d'image
12 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
28 juil. 2014 à 16:55
28 juil. 2014 à 16:55
Bonjour,
Je te conseillerais de mettre une action dans le menu contextuel des fichiers texte qui ouvrirait ton appli avec l'affichage du fichier texte.
Pour ce faire dans les 2 cas, il faut que tu récupères le chemin de ton fichier texte pour pouvoir l'afficher dans une TextBox ou une RichTexBox au choix suivant l'importance du fichier.
Je te conseillerais de mettre une action dans le menu contextuel des fichiers texte qui ouvrirait ton appli avec l'affichage du fichier texte.
Pour ce faire dans les 2 cas, il faut que tu récupères le chemin de ton fichier texte pour pouvoir l'afficher dans une TextBox ou une RichTexBox au choix suivant l'importance du fichier.
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
Modifié par Anonyme209 le 28/07/2014 à 20:07
Modifié par Anonyme209 le 28/07/2014 à 20:07
Bonjour, merci de ta réponse.
Je voudrais cependant que cela se fasse avec tous les types de fichiers, pas seulement avec les fichiers textes. Pour ce qui est de modifier le menu contextuel, je vais faire plus de recherches de mon côté.
Je voudrais cependant que cela se fasse avec tous les types de fichiers, pas seulement avec les fichiers textes. Pour ce qui est de modifier le menu contextuel, je vais faire plus de recherches de mon côté.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
28 juil. 2014 à 20:43
28 juil. 2014 à 20:43
Le fait de mettre le menu contextuel sur tous les fichiers n'est pas un problème. Le problème se situe de l'ouverture de ces fichiers qui est différente pour chaque extension. Pour le menu contextuel tu peux voir la marche à suivre dans différents de mes programmes. Par exemple un de mes derniers : "Visionneuse image" qui lui met un menu contextuel pour les dossier images.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
28 juil. 2014 à 20:44
28 juil. 2014 à 20:44
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
29 juil. 2014 à 11:22
29 juil. 2014 à 11:22
J'avais dans mes archives un petit utilitaire, je viens de déposer la source. Je pense que cela sera plus facile de comprendre avec ce programme:
https://codes-sources.commentcamarche.net/source/100677-afficher-par-clic-droit-le-chemin-d-un-fichier-ou-d-un-dossier
https://codes-sources.commentcamarche.net/source/100677-afficher-par-clic-droit-le-chemin-d-un-fichier-ou-d-un-dossier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
29 juil. 2014 à 12:26
29 juil. 2014 à 12:26
Bonjour, le code de mon programme pour le bouton ouvrir est
Je voudrais que mon programme s'ouvre et exécute le même code dès l'ouverture (en remplaçant fichier par l'adresse du fichier) - sans que l'on n'appuie sur le bouton ouvrir - lorsque l'on choisit d'ouvrir un fichier avec mon programme.
Merci de votre aide et désolé si je n'avais pas bien exposé mon problème.
Try RichTextBox1.Rtf = fichier Catch ex As Exception RichTextBox1.Text = fichier End Try
Je voudrais que mon programme s'ouvre et exécute le même code dès l'ouverture (en remplaçant fichier par l'adresse du fichier) - sans que l'on n'appuie sur le bouton ouvrir - lorsque l'on choisit d'ouvrir un fichier avec mon programme.
Merci de votre aide et désolé si je n'avais pas bien exposé mon problème.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
29 juil. 2014 à 13:45
29 juil. 2014 à 13:45
Ouvrir un nouveau projet nommé: Lire_texte (c'est important pour la suite)
mettre dans le Form une RichTextBox et un Button avec ce code:
Il faut que tu comprennes qu'en faisant un menu contextuel, c'est pour récupérer le chemin du fichier. A partir de là tu peux utiliser ce chemin pour faire ce que tu veux.
Bonne programmation
mettre dans le Form une RichTextBox et un Button avec ce code:
Option Strict On Imports System.IO Imports System.Text Imports Microsoft.Win32 Public Class Form1 Dim cheminsource As String 'chemin du fichier texte Dim Key As RegistryKey Dim cle_txt As String 'clé associée à l'extension .txt Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Button1.Text = "Créer menu contextuel" Verificationcletxt() 'Verifier si la clé Ouvrir Fichier texte existe 'ouverture par clic droit 'recuperer le chemin du fichier texte For Each s As String In My.Application.CommandLineArgs cheminsource = s 'chemin du fichier texte Next s If cheminsource = "" Then Exit Sub Else liretexte(cheminsource) 'ouvrir le fichier texte dans une RichTextBox End If End Sub 'Verifier si la clé Ouvrir Fichier texte existe Private Sub Verificationcletxt() cle_txt = rechercher_cle(".txt") 'chemin de la clé Ouvrir Fichier texte Dim test As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot.OpenSubKey(cle_txt & "\shell\Ouvrir Fichier texte\command", False) If test Is Nothing Then Button1.Text = "Créer menu contextuel" Else Button1.Text = "Supprimer menu contextuel" End If End Sub 'création et suppression du menu contextuel Ouvrir Fichier texte Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click cle_txt = rechercher_cle(".txt") 'chemin clé If Not IsAdmin() Then MessageBox.Show("La modification du menu contextuel de l'explorateur ne se fera pas car vous n'avez pas les " & _ "droits d'aministrateur." & Environment.NewLine & "Pour modifier cette option, vous devez fermer ce programme " & _ " et le relancer en tant qu'administrateur.", "Droits d'aministrateur", MessageBoxButtons.OK, MessageBoxIcon.Information) Else If Button1.Text = "Créer menu contextuel" Then 'On crée la clé Ouvrir Fichier texte Key = Registry.ClassesRoot.CreateSubKey(cle_txt & "\shell\Ouvrir Fichier texte\command") 'adapter le nom du menu contextuel Registry.SetValue("HKEY_CLASSES_ROOT\" & cle_txt & "\shell\Ouvrir Fichier texte\command", "", My.Application.Info.DirectoryPath & "\" & "Lire_texte.exe " & """%1""") 'adapter le nom de l'appli MessageBox.Show("Votre clé est créée", "Création clé registre", MessageBoxButtons.OK, MessageBoxIcon.Information) Button1.Text = "Supprimer menu contextuel" Else Button1.Text = "Supprimer menu contextuel" 'On supprime la clé Ouvrir Fichier texte Key = Registry.ClassesRoot.OpenSubKey(cle_txt & "\shell", True) Key.DeleteSubKeyTree("Ouvrir Fichier texte") 'adapter le nom du menu contextuel MessageBox.Show("Votre clé est supprimée", "Suppression clé registre", MessageBoxButtons.OK, MessageBoxIcon.Information) Button1.Text = "Créer menu contextuel" End If End If End Sub 'affiche le fichier texte dans une RichTextBox Private Sub liretexte(ByVal chemin As String) Dim fileReader As String fileReader = My.Computer.FileSystem.ReadAllText(chemin, Encoding.Default) RichTextBox1.Text = fileReader End Sub Private Function IsAdmin() As Boolean Return My.User.IsInRole(Microsoft.VisualBasic.ApplicationServices.BuiltInRole.Administrator) End Function 'on recherche la clé associée à l'extension Public Function rechercher_cle(ByVal extension As String) As String ' va chercher la sous-clé correspondante Key = Registry.ClassesRoot.OpenSubKey(extension) extension = CStr(Key.GetValue("")) Return extension End Function End Class
Il faut que tu comprennes qu'en faisant un menu contextuel, c'est pour récupérer le chemin du fichier. A partir de là tu peux utiliser ce chemin pour faire ce que tu veux.
Bonne programmation
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
Modifié par Anonyme209 le 29/07/2014 à 15:09
Modifié par Anonyme209 le 29/07/2014 à 15:09
Bonjour,
Je tiens à préciser même après avoir supprimer la clé, la richtextbox est automatiquement remplie du texte du fichier ouvert.
Je ne sais pas si c'est normal, mais ça marche avec tous les fichiers, pas seulement avec les fichiers texte.
Sinon, comment faire pour que ce code marche dans mon application de départ, en sachant que mon application est portable (sans installation) et que l'exécutable peut donc bouger?
Je tiens à préciser même après avoir supprimer la clé, la richtextbox est automatiquement remplie du texte du fichier ouvert.
Je ne sais pas si c'est normal, mais ça marche avec tous les fichiers, pas seulement avec les fichiers texte.
Sinon, comment faire pour que ce code marche dans mon application de départ, en sachant que mon application est portable (sans installation) et que l'exécutable peut donc bouger?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
29 juil. 2014 à 16:00
29 juil. 2014 à 16:00
Je voudrais que, lorsque l'on clique droit sur un fichier, ouvrir avec et que l'on choisisse mon executable, l'appli lise le fichier et l'affiche dans la textbox.
Si tu ouvres ton application comme tu voulais le faire au départ, tu n'as que ce code à mettre:
Je tiens à préciser même après avoir supprimer la clé, la richtextbox est automatiquement remplie du texte du fichier ouvert.
Je ne sais pas si c'est normal, mais ça marche avec tous les fichiers, pas seulement avec les fichiers texte.
C'est normal. Je ne sais pas si tu as compris que l'action ce fait à l'ouverture de ton appli:
Le menu contextuel c'est une facilité. Car avec ton clic droit pour choisir ton exécutable , tu obliges l'utilisateur à aller le chercher, mais c'est ton choix.
J'espère que cela est plus clair pour toi. Il y a tous les commentaires pour la compréhension.
Si tu ouvres ton application comme tu voulais le faire au départ, tu n'as que ce code à mettre:
Option Strict On Imports System.IO Imports System.Text Public Class Form1 Dim cheminsource As String 'chemin du fichier texte Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'recuperer le chemin du fichier texte For Each s As String In My.Application.CommandLineArgs cheminsource = s 'chemin du fichier texte Next s If cheminsource = "" Then Exit Sub Else liretexte(cheminsource) 'ouvrir le fichier texte dans une RichTextBox End If End Sub 'affiche le fichier texte dans une RichTextBox Private Sub liretexte(ByVal chemin As String) Dim fileReader As String fileReader = My.Computer.FileSystem.ReadAllText(chemin, Encoding.Default) RichTextBox1.Text = fileReader End Sub
Je tiens à préciser même après avoir supprimer la clé, la richtextbox est automatiquement remplie du texte du fichier ouvert.
Je ne sais pas si c'est normal, mais ça marche avec tous les fichiers, pas seulement avec les fichiers texte.
C'est normal. Je ne sais pas si tu as compris que l'action ce fait à l'ouverture de ton appli:
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Le menu contextuel c'est une facilité. Car avec ton clic droit pour choisir ton exécutable , tu obliges l'utilisateur à aller le chercher, mais c'est ton choix.
J'espère que cela est plus clair pour toi. Il y a tous les commentaires pour la compréhension.
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
Modifié par Anonyme209 le 29/07/2014 à 16:09
Modifié par Anonyme209 le 29/07/2014 à 16:09
Bonjour,
Merci beaucoup, ça marche.
Je met le sujet en résolu.
PS: est-ce obligé de mettre l'option strict à ON? Ça me crée des erreurs au niveau de mes msgbox.
Merci beaucoup, ça marche.
Je met le sujet en résolu.
PS: est-ce obligé de mettre l'option strict à ON? Ça me crée des erreurs au niveau de mes msgbox.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
29 juil. 2014 à 17:20
29 juil. 2014 à 17:20
l' Option Strict On te souligne toutes tes erreurs pour les corriger. Avant VB.NET on mettait :
MsgBox ("Bonjour")
Maintenant il faut mettre:
le corps du message: Bonjour
le titre du message: Salutation
L'icone à afficher: Information
Derrière MessageBoxIcon tu mets un point, tu va avoir un menu contextuel qui va s'afficher avec toutes les icones que tu peux mettre.
Ceci est valable pour tous ce qui a un point c'est très parique, il faut l'utiliser.
Apprends à mettre tes MsgBox comme ceci. sauf quand tu veux faire des test bien entendu!
Bonne programmation
MsgBox ("Bonjour")
Maintenant il faut mettre:
le corps du message: Bonjour
le titre du message: Salutation
L'icone à afficher: Information
Derrière MessageBoxIcon tu mets un point, tu va avoir un menu contextuel qui va s'afficher avec toutes les icones que tu peux mettre.
Ceci est valable pour tous ce qui a un point c'est très parique, il faut l'utiliser.
MessageBox.Show("Bonjour", "Salutations", MessageBoxButtons.OK, MessageBoxIcon.Information)
Apprends à mettre tes MsgBox comme ceci. sauf quand tu veux faire des test bien entendu!
Bonne programmation
Anonyme209
Messages postés
678
Date d'inscription
samedi 6 octobre 2012
Statut
Membre
Dernière intervention
22 décembre 2020
15
29 juil. 2014 à 17:34
29 juil. 2014 à 17:34
Bonjour,
Personellement je préfère utiliser
que
Sinon, l'erreur était que l'option strict on obligeait à remplacer
par
Embêtant mais facile à régler.
Personellement je préfère utiliser
MsgBox("message", MsgBoxStyle.Information + vbOkOnly, "titre")
que
MessageBox.Show("Bonjour", "Salutations", MessageBoxButtons.OK, MessageBoxIcon.Information)
Sinon, l'erreur était que l'option strict on obligeait à remplacer
MsgBoxStyle.Information + vbOkOnly
par
CType(MsgBoxStyle.Information + vbOkOnly, MsgBoxSyle)
Embêtant mais facile à régler.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
29 juil. 2014 à 18:13
29 juil. 2014 à 18:13
Mais ce n'est pas ce que tu préfères. C'est la manière de coder en VB.NET. Après bien sur tu fais ce que tu veux, mais généralement quand on fait un travail on essaie d'appliquer les règles.
Mais si tu ne veux pas être embêté tu mets:
Option Strict Off
parce que si un programmeur a réglé son VisualStudio 2010 automatiquement à l'ouverture en Option Strict On (c'est mon cas) , je ne t'explique pas les erreurs qu'il va trouvé.
Et pour les déclarations des variable numériques tel que:
Integer, Decimal, Double, Long etc., cela te corrige tes erreurs.
T'apprécies à l'usage. C'est juste une discipline a avoir comme dans beaucoup de domaine
Mais si tu ne veux pas être embêté tu mets:
Option Strict Off
parce que si un programmeur a réglé son VisualStudio 2010 automatiquement à l'ouverture en Option Strict On (c'est mon cas) , je ne t'explique pas les erreurs qu'il va trouvé.
Et pour les déclarations des variable numériques tel que:
Integer, Decimal, Double, Long etc., cela te corrige tes erreurs.
T'apprécies à l'usage. C'est juste une discipline a avoir comme dans beaucoup de domaine