Menu "Ouvrir avec" [Résolu]

Signaler
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
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

Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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é
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
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
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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 ;)
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
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.
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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+