Messages Windows DDE

hugo_cpp Messages postés 8 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 17 août 2006 - 30 mars 2006 à 16:15
shuttleur Messages postés 33 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 30 juin 2008 - 5 juin 2008 à 10:45
Slt à tous,
J'ai une petite question à propos des messages DDE, je comprend à quoi ils servent, mais je n'ai pas d'exemple d'application pour les mettres en oeuvre. Peut on me donner un exemple simple d'utilisation? Merci

3 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
30 mars 2006 à 18:00
Bonjour,

J'ai souvent utilisé les messages DDE pour permettre à mon application
de s'exécuter en une seule instance après avoir
double cliqué sur un fichier dont le type est associé à
l'application. Cela empêche donc l'ouverture d'une nouvelle
instance du programme pour chaque fichier. L'application
reçoit le chemin complet du fichier et se charge de
le traiter. Voici un petit exemple dans la procédure d'une fenêtre
(hWnd):



case WM_DDE_INITIATE:

SendMessage((HWND) wParam,WM_DDE_ACK,(WPARAM)hWnd,0);

return 0;



case WM_DDE_EXECUTE:

char* pcommand;

pcommand = (char*)GlobalLock ((HANDLE) lParam);

//........ pcommand contient la ligne de commande avec chemin du fichier à récupérer et traiter

GlobalUnlock ((HANDLE) lParam);

DDEACK DdeAck;

WORD wStatus;

DdeAck.bAppReturnCode = 0 ;

DdeAck.reserved = 0 ;

DdeAck.fBusy = 0;

DdeAck.fAck = 0;

wStatus = *((WORD *) &DdeAck) ;

PostMessage ((HWND) wParam, WM_DDE_ACK, (WPARAM) hWnd,PackDDElParam (WM_DDE_ACK, wStatus, (UINT) pcommand));

return 0;



case WM_DDE_TERMINATE :

PostMessage ((HWND) wParam, WM_DDE_TERMINATE, (WPARAM) hWnd, 0);

return 0;



Pour pouvoir recevoir les messages DDE, le type du fichier ouvert doit
être associé à l'application. Dans la base de registre, le type
de fichier associé doit contenir la sous clé ddeexec:

HKEY_CLASSES_ROOT\typefichier\shell\open\ddexec

Il suffit de regarder la base de registre avec regedit pour voir des exemples.



L'autre utilisation (que j'ai jamais utilisée) des messages DDE est l'échange de données entre applications.



Voici le lien MSDN au sujet de DDE:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/dynamicdataexchange.asp
0
shuttleur Messages postés 33 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 30 juin 2008
5 juin 2008 à 10:43
Salut racpp !

Je m'intéresse à DDE depuis peu dans le cadre d'une même utilisation à celle que tu cites + pour échange de données entre aplications.
De l'expérience que tu as de DDE pour l'utilisation que tu expliques, est ce qu'il y a des risques de problèmes par rapport à la sécurité de Vista par exemple ?
ou des risques quelconques que DDE nuise à la robustesse de mes applis même si elles n'utilisent pas DDE à des endroits critiques ?

Merci d'avance !
0
shuttleur Messages postés 33 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 30 juin 2008
5 juin 2008 à 10:45
est ce qu'il y a des risques de problèmes par rapport à la sécurité de Vista par exemple ?

Je veux parler des risques que certaines config/OS/antivirus(?) bloquent les messages DDE
0
Rejoignez-nous