Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SHELL EXTENSIONS (OLE, COM, WIN32)


Information sur la source

Catégorie :Système Niveau : Initié Date de création : 20/06/2004 Vu / téléchargé: 4 577 / 588

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

Description

cette source montre comment utiliser les Shell Extensions pour ajouter des commandes de menu au menu contextual clic-droit sur un fichier de l'explorateur et une page de proriétés dans les propriétés du fichier.

commande et page ajoutée pour les fichier "*.txt":
- ouverture avec NotePad
- page de propriétés avec nombre de ligne et de mots

2 exe permettent l'installation et la désintallation de la dll (sources ASM)

le fichier "Readme.txt" donne des informations complémentaires
 

Conclusion

En mode debug, un fichier de Traçage est créée pour visualiser les fonctions appelées.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de BruNews le 21/06/2004 23:34:01 administrateur CS

Tres beau travail comme d'habitude.

signaler à un administrateur
Commentaire de JackosKing le 13/07/2004 08:46:48

Trés bonne source, en revanche je n'ai pas compris:
Dans: DllGetClassObject(...);
on invoque à la fin:
HRESULT hResult = pClassFactory->QueryInterface(iid, ppObj);
pClassFactory->Release();
Or si j'ai bien compris:
Dans QueryInterface, on incremente le nombre de références, et dans Release, on le décrémente, et on le désalloue si il est nul.. donc en gros:
++m_dwRefCount;
puis
if(--m_dwRefCount == 0) delete this;
Là je ne comprend pas:' -> l'objet instancier devrait de suite être désalloué?
De plus, quel est le but de la méthode AddRef, sachant que sa valeur de retour ne semble pas exploitée (à la limite un inline, j'aurai compris, mais là je ne comprend pas:()?

signaler à un administrateur
Commentaire de JackosKing le 13/07/2004 10:57:24

J'ai rien dit, je n'avait pas vu l'héritage:p
Bon le programme marche bien chez moi pour l'ajout de la tab des propriétés, mais pour le menu contextuel, j'ai rien:'

signaler à un administrateur
Commentaire de JackosKing le 13/07/2004 13:54:33

J'ai vérifier la la base de registre, tout semble bon! Le problême vient il du code? qqn l'a fait fonctionné sur son pc?

signaler à un administrateur
Commentaire de ymca2003 le 14/07/2004 02:26:48

Le menu ajouté est "ouvrir avec notepad" (assez logique pour un .txt), il est donc facile de ne pas remarquer son ajout.

signaler à un administrateur
Commentaire de JackosKing le 16/07/2004 13:06:27

je confirme mon dernier message, ca ne marche pas à mon boulot: seul les proprietés marchent.

signaler à un administrateur
Commentaire de ymca2003 le 16/07/2004 21:26:27

sous systèmes multi-utilisateurs, l'administrateur doit autoriser ou non les extensions du shell (rajouter la dll dans la liste des autorisations dans le registre (voir dans le readme). ca vient peut-être de là.

signaler à un administrateur
Commentaire de JackosKing le 18/07/2004 13:26:20

apparement j'ai tous les droits admin, puisque j'ai pu installer delphi, et essayer un exemple delphi utilisant la même methode pour ajouter un item dans le menu contextuel (avec une dll) et que cet exemple marchait parfaitement.
Enfin ce n'est pas bien grave.

signaler à un administrateur
Commentaire de ymca2003 le 29/10/2004 15:32:53

Appareemnt, la vérif des flags dans CTxtShExtMenu::QueryContextMenu enpêche l'ajout de l'item dans certains cas, en enlevant :

if(!(uFlags&CMF_VERBSONLY) && !(uFlags&CMF_EXPLORE))
return NOERROR;

ça à l'air de marcher

signaler à un administrateur
Commentaire de romain_bossart11 le 17/06/2007 11:47:49

Bonjour,
je débute en VC++ (Express Edition). Après avoir installé et déclaré les include et librairies, le build commence bien puis me donne les erreurs suivantes :

Registry.obj : error LNK2019: unresolved external symbol __imp__RegDeleteKeyA@8 referenced in function _DllUnregisterServer@0
Registry.obj : error LNK2019: unresolved external symbol __imp__RegCloseKey@4 referenced in function "int __cdecl WriteKeyString(struct HKEY__ *,char const *,char const *,char const *)" (?WriteKeyString@@YAHPAUHKEY__@@PBD11@Z)
Registry.obj : error LNK2019: unresolved external symbol __imp__RegSetValueExA@24 referenced in function "int __cdecl WriteKeyString(struct HKEY__ *,char const *,char const *,char const *)" (?WriteKeyString@@YAHPAUHKEY__@@PBD11@Z)
Registry.obj : error LNK2019: unresolved external symbol __imp__RegCreateKeyExA@36 referenced in function "int __cdecl WriteKeyString(struct HKEY__ *,char const *,char const *,char const *)" (?WriteKeyString@@YAHPAUHKEY__@@PBD11@Z)
TxtShExtMenu.obj : error LNK2019: unresolved external symbol __imp__DragQueryFileA@16 referenced in function "public: virtual long __stdcall CTxtShExtMenu::Initialize(struct _ITEMIDLIST const *,struct IDataObject *,struct HKEY__ *)" (?Initialize@CTxtShExtMenu@@UAGJPBU_ITEMIDLIST@@PAUIDataObject@@PAUHKEY__@@@Z)
TxtShExtProp.obj : error LNK2001: unresolved external symbol __imp__DragQueryFileA@16
TxtShExtMenu.obj : error LNK2019: unresolved external symbol __imp__ShellExecuteA@24 referenced in function "public: virtual long __stdcall CTxtShExtMenu::InvokeCommand(struct _CMINVOKECOMMANDINFO *)" (?InvokeCommand@CTxtShExtMenu@@UAGJPAU_CMINVOKECOMMANDINFO@@@Z)

Quelqu'un aurait-une idée pour m'aider à compiler ShExt ?

Merci d'avance

signaler à un administrateur
Commentaire de BruNews le 17/06/2007 12:00:08 administrateur CS

Tu as bien posé VC++ et platform SDK comme indiqué ici ?
http://www.cppfrance.com/code.aspx?ID=38359

Ensuite pour le type de projet c'est WIN32 APP qu'il faut et non du DotNet.

signaler à un administrateur
Commentaire de romain_bossart11 le 17/06/2007 12:01:09

Re-bonjour,

Laissez tomber mon commentaire précédent. Navré de vous avoir dérangé.
J'ai trouvé comment faire (corewin...props)

A++

signaler à un administrateur
Commentaire de romain_bossart11 le 17/06/2007 12:03:39

BruNews, merci pour ta réponse, effectivement, c'était un problème de configuration de VC++.
Je suis linuxien, et je ne connais pas encore cet outil.

Merci et a+
Romain

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.