Menu "Ouvrir avec" [Résolu]

Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 18 juil. 2007 à 18:07 - Dernière réponse : Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention
- 30 juil. 2007 à 17:54
Bonjour,

Je cherche à recréer le menu "Ouvrir avec" de l'explorateur windows pour un de mes programmes.

Je connais la technique qui est de récupérer l'ID du programme associés dans le registre à la clé "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts" puis de récupérer la commande dans "HKEY_CLASSES_ROOT\Applications" (source de loskiller62 ici), mais le problème est que cette solution n'est pas complète car on ne récupère pas le nom du programme.

On trouve par exemple ""%systemroot%\system32\mspaint.exe" "%1"", ce qui est affiché sous le nom "Paint" dans le menu de l'explorateur windows, ou encore "rundll32.exe %SystemRoot%\system32\shimgvw.dll,ImageView_Fullscreen %1", affiché sous le nom "Apperçu des images et des télécopies Windows". Ou trouve-t-on ces noms? J'ai cherché, mais pas trouvé....

En plus, je voudrais aussi afficher "Choisir le programme..." comme dans l'explorateur, quelle commande shell dois-je utiliser pour ouvrir la fenêtre "Ouvrir avec"??

Le plus simple serait de trouver un moyen pour accéder directement au menu de l'explorateur, si c'est possible...

Quelqu'un aurait-il quelques infos pouvant m'être utile?

Je vous remerci d'avance
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 30 juil. 2007 à 17:54
3
Merci
Voilà, après une semaine d'absence je viens vous signaler que mon menu fonctionne à merveille

Voici le code

Sujet clos, encore merci pour l'aide apporté

Merci Kevin.Ory 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 85 internautes ce mois-ci

Commenter la réponse de Kevin.Ory
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 18 juil. 2007 à 18:37
0
Merci
Salut
Pour ta question de "Choisir le programme" :
En cherchant   vb shell "open with"  dans mon moteur de recherche favori
>  http://vbnet.mvps.org/index.html?code/shell/shellexecute.htm

Call Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " & sFile, vbNormalFocus)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Commenter la réponse de cs_Jack
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 19 juil. 2007 à 00:01
0
Merci
Merci jack, voilà déjà un truc en moins :) (ça fonctionne)

Et à propos des noms des appli, j'ai trouvé qqch:

Dans la clé "HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache" il y un liste de [chemin de l'application]/[Nom affiché], ça devrait faire l'affaire ;)
Commenter la réponse de Kevin.Ory
cs_EBArtSoft 4530 Messages postés dimanche 29 septembre 2002Date d'inscription 23 décembre 2014 Dernière intervention - 19 juil. 2007 à 13:54
0
Merci
Sinon tu peux trouver le nom de n'importe quel exe normallement formé (c'est a dire un exe qui possede un n° de version) gace a GetFileVersion

@+

E.B.
Commenter la réponse de cs_EBArtSoft
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 20 juil. 2007 à 03:21
0
Merci
Ah mais oui.. j'étais tellement dans cette base de registre que j'ai pas pensé à ça :) Merci EBArtSoft ;)

Je vais essayer, ça m'a l'air bien plus convainquant que cette clé que j'ai cité plus haut.

Juste un truc, c'est pas tjr facile d'extraire le chemin de l'appli à partir de la commande. Exemple:

Easy:
"C:\Program Files\Internet Explorer\iexplore.exe" %1
"%systemroot%\system32\mspaint.exe" "%1"

Les suivantes sont plus compliquées:
rundll32.exe %SystemRoot%\system32\shimgvw.dll,ImageView_Fullscreen %1
C:\Program Files\VideoLAN\VLC\vlc.exe --started-from-file "%1"

Le problème c'est qu'il n'y a plus les guillemets avant et après la chaine. On peut trouver le début de la chaine avec les : du lecteur, mais pour trouver la fin... c'est une autre affaire. Faire une boucle qui ajoute une lettre à chaque fois et faire un test File.Exist? (et on prend la dernière chaine qui retourne True). Ca peut faire l'affaire, mais c'est pas très optimisé ^^

Mais je vais tenter cette technique, je vous tient au courant...

A+
Commenter la réponse de Kevin.Ory

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.