- C / C++ / C++.NET : Extension du shell: menu contextuel en c (win32 api) - CodeS SourceS
- C / C++ / C++.NET : Extension du shell : menu contextuel (win32 api) - CodeS SourceS
- Delphi / Pascal : Extensions du shell : menu contextuel - CodeS SourceS
- Javascript : Ajouter des extensions au menu contextuel d'internet explorer - CodeS SourceS
- C / C++ / C++.NET : Infotip shell extension (bulle de l'explorateur windows) (win32 api) - CodeS So
31 janv. 2009 à 19:54
26 janv. 2009 à 17:57
Pour info, j'ai testé la version c++ elle fonctionne correctement sous ce meme Vista
Sinon pour en revenir à la version C, dans xp dans la fonction CreateInstanceIClassFactory
le riid reçu est IID_IShellExtInit mais sous Vista le riid reçu est IID_IContextMenu
C'est tout ce que j'ai trouvé pour le moment, je continue à chercher et je te tiens au courant.
++
25 janv. 2009 à 15:43
25 janv. 2009 à 15:05
J'ai enfin dl le code hier car je dois faire une petite extension mais eh ca ne fonctionne pas chez moi :(
Quelqu'un a-t-il testé sur un Vista SP1 ?
J'ai bien enregistré la dll en tant qu'admin mais rien ne s'affiche dans le menu :s
++
27 nov. 2008 à 23:45
Encore merci pour cette mine d'informations.
27 nov. 2008 à 23:44
Tu as vraiment réponse à tout...
27 nov. 2008 à 23:04
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer
ajoute la chaine DesktopProcess de type REG_DWORD et lui assigne 1 comme valeur. La valeur 0 permet de faire l'inverse c'est à dire d'ouvrir les fenêtres de l'explorateur dans le même processus.
Pour automatiser l'opération, colle les lignes suivantes dans le Bloc-notes, enregistre avec l'extension .reg puis exécute le fichier:
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
"DesktopProcess"=dword:00000001
27 nov. 2008 à 22:04
J'ai cependant un petit souci.
Lorsque j'enregistre la dll avec regsvr32, puis que je l'utilise, tout va bien.
Je veux ensuite la désenregister avec regsvr32 -u. La aussi, pas de problèmes. Enfin apparemment.
Si j'essaie de supprimer la dll, windows m'indique qu'elle est utilisée.
Pour le développement, je dois dire que c'est un peu pénible, fermer la session, se reconnecter, supprimer le fichier, et ce à chaque test...
J'ai testé avec ta dll, j'observe le même problème (il faut avoir visualisé le menu contextuel avec la nouvelle extension shell pour que le problème se manifeste).
Saurais-tu comment corriger cela?
Par la même occasion, y a-t-il un moyen pour déboguer une extension shell?
13 nov. 2008 à 00:28
Oui j'ai bien compris le principe, le probleme est que j'avais fais une extention shell en m'appuyant sur un exemple, mais quand j'ai voulu modifier le guid ca ne fonctionnait plus.
J'avais egalement utilisé le generateur de BruNews, mon erreur devait donc venir d'autre part...
Merci pour cette precision ;)
++
12 nov. 2008 à 20:53
Le GUID n'est autre qu'un identificateur. Il permet d'identifier de manière unique un composant COM comme notre DLL. Je l'ai créé avec un générateur de GUID comme celui proposé parmi les sources de Brunews. Le mien est unique au monde car la DLL est destinée à être distribuée. Cela évite tout conflit possible avec un autre GUID, ayant la même valeur, déjà présent sur la base de registre. Si une DLL COM ne sera utilisée que sur un seul PC, un GUID local suffit.
12 nov. 2008 à 15:11
Merci pour cette jolie implementation en C :)
Juste un ptit truc, le GUID tu vas le chercher ou ?
A quoi correspondent ces valeurs:
CLSID_ShellExtension={0x6751504C,0xAE59,0x11DD,{0xB7,0x47,0x0,0xD,0x9D,0x95,0x33,0x2B}};
++