begin process at 2008 07 20 09:18:18
1 213 150 membres
71 nouveaux aujourd'hui
14 166 membres club

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 132 / 572

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.
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

  • 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

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS