SHELL EXTENSIONS (OLE, COM, WIN32)

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 21 juin 2004 à 23:34
romain_bossart11 Messages postés 3 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 17 juin 2007 - 17 juin 2007 à 12:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23854-shell-extensions-ole-com-win32

romain_bossart11 Messages postés 3 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 17 juin 2007
17 juin 2007 à 12:03
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
romain_bossart11 Messages postés 3 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 17 juin 2007
17 juin 2007 à 12:01
Re-bonjour,

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

A++
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juin 2007 à 12:00
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.
romain_bossart11 Messages postés 3 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 17 juin 2007
17 juin 2007 à 11:47
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
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
29 oct. 2004 à 15:32
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
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
18 juil. 2004 à 13:26
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.
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
16 juil. 2004 à 21:26
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à.
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
16 juil. 2004 à 13:06
je confirme mon dernier message, ca ne marche pas à mon boulot: seul les proprietés marchent.
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
14 juil. 2004 à 02:26
Le menu ajouté est "ouvrir avec notepad" (assez logique pour un .txt), il est donc facile de ne pas remarquer son ajout.
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
13 juil. 2004 à 13:54
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?
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
13 juil. 2004 à 10:57
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:'
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
13 juil. 2004 à 08:46
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:()?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 juin 2004 à 23:34
Tres beau travail comme d'habitude.
Rejoignez-nous