begin process at 2010 02 09 19:28:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de registre

 > RÉCUPÉRATION DES APPLICATIONS "OUVRIR AVEC..." D'UN FICHIER (D'UNE EXTENSION)

RÉCUPÉRATION DES APPLICATIONS "OUVRIR AVEC..." D'UN FICHIER (D'UNE EXTENSION)


 Information sur la source

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de registre Source .NET ( DotNet ) Niveau :Débutant Date de création :30/06/2005 Vu :13 096

Auteur : loskiller62

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Cette fonction retourne la liste des applications (en fait la liste des commandes Shell) pour lancer le type de fichier concerné (on fournit l'extension du fichier).
Cette liste correspond aux applications présentes dans le menu contextuel "Ouvrir avec..." d'Explorer lorsque l'on fait un clic droit sur un fichier.

Source

  • Public Function GetOpenWithApp(ByVal Extension As String) As List(Of String)
  • Dim hsubKeyExt, hSubKeyApp As RegistryKey
  • GetOpenWithApp = New List(Of String)
  • 'Récupération des noms d'applications liés à l'extension
  • hsubKeyExt = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\." & Extension & "\OpenWithList")
  • If Not hsubKeyExt Is Nothing Then
  • Dim sApplication As String
  • Dim Cles() As String = hsubKeyExt.GetValueNames
  • For Each sApplication In Cles
  • sApplication = hsubKeyExt.GetValue(sApplication)
  • 'Récupération de la commande pour lancer cette application
  • hSubKeyApp = Registry.ClassesRoot.OpenSubKey("Applications\" & sApplication & "\shell\open\command")
  • If Not hSubKeyApp Is Nothing Then
  • GetOpenWithApp.Add(hSubKeyApp.GetValue(""))
  • hSubKeyApp.Close()
  • End If
  • Next
  • hsubKeyExt.Close()
  • End If
  • End Function
Public Function GetOpenWithApp(ByVal Extension As String) As List(Of String)
        Dim hsubKeyExt, hSubKeyApp As RegistryKey
        GetOpenWithApp = New List(Of String)

        'Récupération des noms d'applications liés à l'extension
        hsubKeyExt = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\." & Extension & "\OpenWithList")
        If Not hsubKeyExt Is Nothing Then
            Dim sApplication As String
            Dim Cles() As String = hsubKeyExt.GetValueNames

            For Each sApplication In Cles
                sApplication = hsubKeyExt.GetValue(sApplication)
                'Récupération de la commande pour lancer cette application
                hSubKeyApp = Registry.ClassesRoot.OpenSubKey("Applications\" & sApplication & "\shell\open\command")
                If Not hSubKeyApp Is Nothing Then
                    GetOpenWithApp.Add(hSubKeyApp.GetValue(""))
                    hSubKeyApp.Close()
                End If
            Next
            hsubKeyExt.Close()
        End If
    End Function



 Sources du même auteur

Source avec Zip Source avec une capture ANALYSE DE PROJETS VB6
Source avec Zip Source avec une capture CHANGESCREEN

 Sources de la même categorie

SCRIPT VBS DE LECTURE DE CLEF DE LA BDR par djebbipgm
Source avec Zip SUPPRESSION MESSAGE SÉCURITÉ À L'UTILISATION D'UN CONTRÔLE A... par mimiZanzan
Source avec Zip Source avec une capture Source .NET (Dotnet) SURVEILLER_CHANGEMENT_REGISTRE par Le Pivert
Source avec Zip Source .NET (Dotnet) AUTO-CONFIGURATION DES PARAMÈTRES DE PROXY D' INTERNET EXPLO... par drahcir
Source avec Zip Source avec une capture OUVRIR LE REGISTRE EN DÉFFINISSANT LA CLÉ DE SON CHOIX. par MiciM

Commentaires et avis

Commentaire de Alain Proviste le 30/06/2005 18:23:27 administrateur CS

une alternative à FindExecutable ?

Commentaire de loskiller62 le 30/06/2005 21:33:22

Je viens de découvrir cette API. Ce que je propose n'en est pas une alternative. Cette fonction va par exemple aider à recréer un menu contextuel sur un contrôle représentant un fichier. On récupère vraiment tout les logiciels utilisables pour ouvrir un type de fichier, enfin tout du moins les logiciels que l'on retrouve lorsqu'on fait un clic droit sur un fichier dans explorer et que l'on se place sur "Ouvrir avec..."

Après pour retrouver l'executable lié à un fichier on utilisera donc effectivement FindExecutable plutôt que de se balader dans la bdr.

Enfin pour ouvrir un fichier (en .NET 2005 beta 2 tout du moins), on pourras utiliser System.Diagnostics.Process. (J'en profite pour balancer quelques trucs ;-) )

Commentaire de jmenfous le 07/07/2005 11:58:01

Si tu veux un truc vraiment simple...

Windows est plustot simpa avec nous car quand tu lances la methode
process.Start("fichier.txt")

C'est windows qui se charge de trouver le programme utlise sur la machine pour ouvrir le fichier... donc pas besoin de chercher il le fait pour toi.

Autre test
process.Start("http://www.google.fr")
et la mirrrracle IE6 souvre... enfin si c'est ton navigateur par defaut.

Personnellement j'utilise cette methode pour lancer des commandes sur mon PC a partir de mon Pocket PC et ca marche bien (bien entendu c'est un service sur le PC qui ecoute sur un port les demandes du pocket)

Et pour ca pas besoin de la beta 2, ;-)
Pour les amoureux de ce bon vieu VB6, il y a toujours SHELL("") et ca marche aussi bien.

Commentaire de loskiller62 le 07/07/2005 19:45:21

Bien sûr, je connais ça et je l'utilise dans le même programme, mais ce que tu proposes ouvre le fichier avec l'application par défaut. C'est bien, mais maintenant si je veux offrir la possibilité d'ouvrir le fichier avec les autres applications définies par l'utilisateur, j'ai besoin de ce code.

Commentaire de jmenfous le 08/07/2005 09:22:02

Mais j'ai bien compris, ne t'en fait pas...

J'ai vu de la lumiere donc je suis entre. Non mais comme si je collais une note de 10/10 comme ca au hazard sans regarder la source... en plus quand je n'aime pas je ne note pas.

PS: petite idee pour toi, si tu combines ca avec une extracteur d'icons, tu pourrais te faire un menu sympa ;-)

Commentaire de loskiller62 le 10/07/2005 20:43:57

Mince j'avais pas vu la note ^^. Merci.
Pour le coup des icônes c'est appliqué dans mon programme. Je vais peut être mettre à jour cette source pour les prendre en compte.

Commentaire de zeunz le 26/04/2006 09:12:26

slt tt le monde,
comment rajouter SON application ds le menu "ouvrir avec"?

merci du renseignement.

Commentaire de jmenfous le 26/04/2006 09:53:45

Un simple lien dans le repertoire SENDTO qui se trouve dans le repertoire suivant
C:\Documents and Settings\<Ton Login>\SendTo

Et voila c gagne, tu peux programmer la creation de ce raccourci comme le raccourci dans le menu demarrer, quand tu cree un pacquage de deploiment via visual.

Commentaire de zeunz le 26/04/2006 09:59:11

ok merci pr l'info, j'en prends note.
Bye, Zeunz.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales