begin process at 2012 02 10 04:51:08
  Trouver un code source :
 
dans
 

31 commentaire(s) de Xaviou sur des sources sur tout CodeS-SourceS

Déposé sur Extension du shell : menu contextuel (win32 api)

J'ai oublié un truc dans mon post précédent.

J'ai en effet constaté que pour un raccourci (sur le bureau, dans le menu démarrer), DragQueryFile retourne la cible de ce raccourci, et non le fichier lui-même (le ".lnk").

J'aurai besoin de détecter ce genre de chose (par exemple, pour proposer la possibilité d'ouvrir une fenêtre explorateur dans le dossier de la cible du raccourci).

@+
Xav'
Posté le : 02/10/2009 08:38:53

Déposé sur Extension du shell : menu contextuel (win32 api)

Hello
Moi, ça merdouille un coup sur deux si je remets le GlobalFree
Pour le GlobalUnlock avant le SetClipboardData, il y est déjà (vu qu'il y était dans ta source).

Et concernant l'article MSDN, il y est bien dit que si SetClipboardData est appelée avec succès, le système prend possession de l'objet identifié par le paramètre hMem, et que l'application ne doit ni écrire dans, ni libérer la mémoire de cet objet après que la possession ait été prise par le système.
Il est par contre possible de lire le contenu de cet objet après avoir appelé SetClipboardData, en faisant un GlobalLock, mais il faut penser à faire un GlobalUnlock avant d'appeler CloseClipboard. :

Citation MSDN : If SetClipboardData succeeds, the system owns the object identified by the hMem parameter. The application may not write to or free the data once ownership has been transferred to the system, but it can lock and read from the data until the CloseClipboard function is called. (The memory must be unlocked before the Clipboard is closed.) If the hMem parameter identifies a memory object, the object must have been allocated using the function with the GMEM_MOVEABLE flag.

Sinon, j'ai un peu amélioré le truc, en utilisant l'interface IContextMenu3 à la place de IContextMenu, afin de pouvoir ajouter des icônes à mes entrées de menu contextuel.
Et autant dire, j'ai mis un moment avant de trouver pourquoi la fonction HandleMenuMsg2 n'était jamais appelée.

Pour ceux que ça intéresse, il faut penser à modifier la fonction QueryInterface :
Pour un simple IContextMenu, on a (code ci-dessus) :
if (IsEqualGUID(riid, IID_IShellExtInit) || IsEqualGUID(riid, IID_IUnknown))*ppv = (LPSHELLEXTINIT)this;
else if (IsEqualGUID(riid, IID_IContextMenu))*ppv = (LPCONTEXTMENU)this;

Pour prendre en compte IContextMenu3, il faut mettre :
if (IsEqualGUID(riid, IID_IShellExtInit) || IsEqualGUID(riid, IID_IUnknown))*ppv = (LPSHELLEXTINIT)this;
else if (IsEqualGUID(riid, IID_IContextMenu3))*ppv = (LPCONTEXTMENU3)this;
else if (IsEqualGUID(riid, IID_IContextMenu))*ppv = (LPCONTEXTMENU)this;

Et ça marche tip-top.

@+
Xav'
Posté le : 02/10/2009 08:25:04

Déposé sur Extension du shell : menu contextuel (win32 api)

Hello
Excellente source !

Malgré tout, il y a (à mon avis) un petit soucis.
Je m'explique :
Je suis parti de cette source pour faire ma propre extension (j'utilise Code::Blocks / MinGW).
Je me suis aperçu que la fonction "Copier le chemin" ne marchait qu'un fois sur deux.
Après quelques tests, il s'avère que c'est "SetClipboardData" qui foire.

Et après consultation de la doc sur MSDN ( http://msdn.microsoft.com/en-us/library/ms649051%28VS.85%29.aspx ) il apparaît que le système prend possession de l'objet que l'on met dans le clipboard, et qu'il ne faut surtout pas libérer la mémoire correspondante.

Et effectivement, en supprimant le "GlobalFree" ça marche à tous les coups.
J'aimerais quand même avoir confirmation du fait qu'il faille bien le supprimer.

En tout cas, merci Racpp pour cette source (et pour toutes les autres).

@+
Xav'
Posté le : 24/09/2009 16:31:57

Déposé sur Pcheck - information système - c++ builder 6

Pourquoi dis-tu que ça ne marche pas "puissance de deux" ?
C'est pourtant ce qui est utilisé ! (2^9=512)

C'est une barette de 510 (par exemple) qui risque d'être chère, vu que ce n'est pas possible à faire.
Posté le : 05/06/2007 17:53:32

Déposé sur Pcheck - information système - c++ builder 6

Ben justement, comme ça marche par puissances de 2, je ne vois pas comment il pourrait avoir 1023Mo => c'est donc 1024Mo.

J'espère bien, que quand on achète une barette de 512Mo, elle fait 512Mo, au Ko près (à l'octet près, même).

Mais bon, ça n'était juste qu'un petite plaisanterie.
Posté le : 05/06/2007 16:11:02

Déposé sur Débloquer les pièces jointes d'outlook

Le zip ci-dessus ne contient que le code source.

Pour l'éxécutable : http://xaviou.chez-alice.fr   (rubrique développement)
Posté le : 03/03/2007 08:02:55

Déposé sur Jeu "quarto" en opengl

CDESROCH > Désolé, c'était une boulette de ma part.
Je viens de mettre à jour le ZIP
Posté le : 15/01/2007 23:23:27

Déposé sur Débloquer les pièces jointes d'outlook

Négatif : ça ne marche qu'avec Outlook Express.
Il n'y a aucune option dans Outlook "normal" pour cela...
Posté le : 17/11/2006 17:51:43

Déposé sur Pcheck - information système - c++ builder 6

Heu, juste une petite question:
Tes 1023 Mo de RAM, c'est une seule barette, ou deux barettes de 511,5 Mo ?  ;-)
Posté le : 17/09/2006 20:54:02

Déposé sur Utilisation wxwidgets 2.6.3 sous code::blocks

Ouaips, t'as pas tord !

J'vais m'y r'mettre pour ajouter une intro correcte, et pour ajouter un peut de code à l'application d'exemple.

C'est vrai qu'à l'origine, le code que j'avais ajouté n'était là que pour pouvoir tester le bon fonctionnement de l'installation.

.... à suivre, donc ;)
Posté le : 30/03/2006 20:44:42

1 2 3 4


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,872 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales