Menu "Ouvrir avec"

Résolu
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 18 juil. 2007 à 18:07
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 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

5 réponses

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
30 juil. 2007 à 17:54
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é
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 juil. 2007 à 18:37
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
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
19 juil. 2007 à 00:01
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 ;)
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
19 juil. 2007 à 13:54
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
20 juil. 2007 à 03:21
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+
0
Rejoignez-nous