Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1789 connectés 

  FORUM HardWare.fr
  Programmation

  [C++/C] Dynamic Data Exchange, messages Inter-Process

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++/C] Dynamic Data Exchange, messages Inter-Process

n°71841
El_gringo
Posté le 13-11-2001 à 15:39:34  profilanswer
 

Alors, dans mon appli, je veux, pour un fichier d'une extention donnée, faire exactement comme quand, dans l'explorateur Window, on fait bouton de dte sur le fichier, puis imprimer. Pour ça, je vais chercher dans la base de registre la ligne de commande associée à l'action "imprimer" du type de fichier. Mais en fait, des fois, la ligne de commande n'est pas suffisante. En plus de celle ci, le "Dynamic Data Exchange" (DDE) est utilisé.
Je peut récupérer la chaine de commande DDE associée à l'impression du type de fichier que je veux (par exemple: [REM _DDE_Minimize][FileOpen("%1" )][FilePrint 0][DocClose 2), pour word).  
Mais j'en fais quoi de ça !? qqn s'en est déja servi !?

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

mood
Publicité
Posté le 13-11-2001 à 15:39:34  profilanswer
 

n°71843
El_gringo
Posté le 13-11-2001 à 15:45:39  profilanswer
 

Je sais juste que DDE, c un mode plus avancé que la ligne de commande pour la communication inter-process sous Windows. Puisque la ligne de commande ne peut être envoyée qu'au lancement du programme. Des messages DDE on peux en envoyer n'importe quand. Et à mon avis, ça va prendre beaucoup d'importance ce truc avec l'arrivée de windows XP, parce qu'a ce qu'y parais , les lignes de commande n'existent plus sous winXP

n°71868
El_gringo
Posté le 13-11-2001 à 16:17:43  profilanswer
 

pas d'idées les jeunes !? (les vieux aussi d'ailleurs !:D)

n°71942
karlkox
Posté le 13-11-2001 à 19:13:34  profilanswer
 

Les DDE sont a éviter de nos jours (dixit kro$osft) mais j'ai une petite méthode qui permet de faire ca.
Tout d'abord il faut que tu créé une seule instance de ton programme (avec CreateMutex), ensuite dans ton main il faudra que tu fasses une fonction qui gere lpCmdLine (dans ton WinMain) qui récuperera donc l'argument.
Pour l'envoyer tu te servira du tout bete SendMessage (ou SendMessageTimeOut si ton appli mais un certain temps a se lancer), tu utilises WM_COPYDATA comme message (2 eme argument de SendMessage), et tu filleras une structure de type COPYDATASTRUCT. Voila en gros, c'est comme ca que je procede et ca marche plutot bien (pas X fois l'app qui se lance par exemple).

n°72083
El_gringo
Posté le 14-11-2001 à 11:51:13  profilanswer
 

Merci, ms j'comprends pas trop ton explication:
 
-moi g pas besoin de gérer la ligne de commande de mon appli, c pas lié ! je veux pas utiliser les DDE pour controler mon appli, je veux seulement envoyer un message DDE à une autre appli.
 
-Faire un CopyData, ok. Mais, dans ma structure COPYDATASTRUCT, je met quoi, un pointeur vers ma chaine de caractères DDE !?? (type: [REM _DDE_Minimize][FileOpen("%1" )][FilePrint 0][DocClose 2), pour word)
 
y suffit vraiement de faire ça pour que le message soit pris en compte par l'appli externe !?

n°72088
El_gringo
Posté le 14-11-2001 à 12:05:56  profilanswer
 

G compris ou tu veux en venir: tu me donne une méthode pour éviter les DDE. Merci, ms en fait g pas le choix: g une chaine de charactère qui contient un commande DDE, et je veux envoyer cette commande DDE à une appli !

n°72102
Carbon_14
Posté le 14-11-2001 à 12:44:42  profilanswer
 

En VB(3), y avait des exemples qui marchaient pas mal pour télécommander PFE par ex ("OpenFile machin" ).
En C, ai pas encore réussi à m'en dépatouiller. Ai exemple Krosoft où ils ont écrit deux applis, l'une envoyant les commandes à l'autre (dessin télécommandé) mais c'est "spécifique" (sur mesure).
J'ai "écrit" (adapté un exemple Krosoft) une appli affichant les WMF et permettant d'exporter le presse-papiers quand dans ce format. Sous NT4, si on change l'appli qui doit afficher les WMF, on ne peut désactiver le DDE (sauf effacer la clé de la BdeRegistre). J'ai réussi à "envoyer aux oubliettes" la requète DDE que je ne sais comment gérer, mais on retrouve quand même le nom/path du fichier SUR LA LIGNE DE COMMANDE !!! Le DDE envoyé par l'explorateur doit compléter les infos( !) Je viens d'essayer d'associer "Imprimer" sous Explorateur sans DDE. Ca me charge le fichier sans plus.
 
Ca fait guère avancer les affaires... Y a des tonnes d'APIs pour DDE ! Je m'y suis noyé. :D

n°72130
El_gringo
Posté le 14-11-2001 à 14:15:17  profilanswer
 

G consulté la doc sur le sujet, ça parait relativement compliqué alors que c pour une fonction toute basique: je veux juste envoyer un message d'impression d'un fichier à une appli (qui peut être n'importe quelle appli: l'appli associée au type de doc à imprimer). Pour lancer un exe avec une commade d'impression, 2 cas de figure existe selon l'appli:
 
1- l'ordre se donne par un simple ligne de commande, un truc style NomAppli.exe \h c:\MonFichier.ext suffit.
 
2- l'appli doit être lancée par ligne de commande, puis l'ordre d'impression est envoyé par une commande DDE (qui est en effet le complément d'info dt tu parles, Carbon14).
 
Les cas 1 est bateau, le cas 2 est... trop chiant à gérer. G l'impression qu'on n'peux pas envoyer de commande DDE sans mettre en place toute une architecture DDE qui parait du genre "complexe".
Alors, si qqn sais envoyer de commandes DDE, merci de m'en parler. Si tu ne connais pas ça, t'arrête pas là, g une petite question: Dans le cas de figure que je viens d'exposer, on peut surement dire que MonAppli (celle qui doit envoyer les messages DDE) est Cliente, et que l'appli qui recevra le message d'impression est l'appli Serveur, non !?

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

n°72222
El_gringo
Posté le 14-11-2001 à 16:11:48  profilanswer
 

hé !?

n°72261
El_gringo
Posté le 14-11-2001 à 17:29:01  profilanswer
 

hé bah, ça vous inspire pas on dirait !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++/C] Dynamic Data Exchange, messages Inter-Process

 

Sujets relatifs
[Algo] Faire la part entre des data et des command...[openGL && win32] pb de gestion des messages
[java] Data Stream[C++, MFC] envoyer des messages...
C++ : cai quoi les commandes poor stocker D data ds D fichiers(VB 6) Mettre a jour un data report
[Perl}->comment killer des processtout les auteurs des messages de hardware fr sont écrit par moi !
[MySQL] Pb de data remplacée anormalement[C++] dynamic_cast
Plus de sujets relatifs à : [C++/C] Dynamic Data Exchange, messages Inter-Process


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR