begin process at 2012 02 09 08:50:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > DDE: DYNAMIC DATA EXCHANGE

DDE: DYNAMIC DATA EXCHANGE


 Information sur la source

Note :
Aucune note
Catégorie :Divers Niveau :Initié Date de création :15/11/2003 Date de mise à jour :15/11/2003 10:28:26 Vu / téléchargé :8 768 / 453

Auteur : BarthOlivier

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Voila une petite classe permettant de mettre en oeuvre une liaison Client vers un serveur DDE. Ce n'est qu'une adaptation d'un code que j'ai trouvé dans les aides, mais vu que j'ai galèré pour la mettre en application, je trouve judicieux de la diffuser...

Pour la classe, j'avoue qu'il y a peut-etre mieux, mais bon elle a le merite d'etre claire, et concise... Pour les fouineurs, je n'ai pas reflechi pour la création d'un Serveur DDE, mais pour les courageux le travail reste à faire....

Source

  • juste un exemple de code avec le serveur DDE de EXCEL....
  • /********************************************************/
  • /* Verifie que Excel est installé */
  • /********************************************************/
  • static bool ExcelRegistry(char *Valeur)
  • {
  • CRegistreUtil Registre;
  • if(!Registre.LitTexte(HKEY_CLASSES_ROOT,EXCEL_KEY,"",Valeur,100))
  • return TRUE;
  • return FALSE;
  • }
  • /********************************************************/
  • /* Envoi l'instruction DDE a excel */
  • /********************************************************/
  • static bool ExcelDDE(char *Commande)
  • {
  • DDE ddeSysteme;
  • if(ddeSysteme.OuvrirConnexion("Excel","System"))
  • {
  • ddeSysteme.EnvoiChaine(Commande);
  • ddeSysteme.FermeConnexion();
  • return TRUE;
  • }
  • return FALSE;
  • }
  • /********************************************************/
  • /* Ouvre le fichier et l'envoi vers excel */
  • /********************************************************/
  • void COscilloUSBDlg::OnMenuEporterversexcel()
  • {
  • CString Sortie;
  • char Commande[500];
  • char Valeur[200];
  • CFileDialog dlg(false,"xls","*.xls");
  • if(dlg.DoModal()==IDOK)
  • {
  • Sortie=dlg.GetPathName();
  • if(ExcelRegistry(Valeur))
  • {
  • wsprintf(Commande,"[OPEN(\"%s\")]",Sortie.GetBuffer(Sortie.GetLength()));
  • WinExec(Valeur,SW_SHOWDEFAULT); // Lance Escel
  • ExcelDDE(Commande); // Envoi l'instruction DDE
  • }
  • }
  • }
juste un exemple de code avec le serveur DDE de EXCEL.... 

/********************************************************/
/*                            Verifie que Excel est installé                           */
/********************************************************/
static bool ExcelRegistry(char *Valeur)
  {
  CRegistreUtil Registre;

  if(!Registre.LitTexte(HKEY_CLASSES_ROOT,EXCEL_KEY,"",Valeur,100))
    return TRUE;
  return FALSE;
  }

/********************************************************/
/*                            Envoi l'instruction DDE a excel                         */
/********************************************************/
static bool ExcelDDE(char *Commande)
  {
  DDE  ddeSysteme;	

  if(ddeSysteme.OuvrirConnexion("Excel","System"))
    {
    ddeSysteme.EnvoiChaine(Commande);
    ddeSysteme.FermeConnexion();
    return TRUE;
    }
  return FALSE;
  }

/********************************************************/
/*                       Ouvre le fichier et l'envoi vers excel                      */
/********************************************************/
void COscilloUSBDlg::OnMenuEporterversexcel() 
{
CString	Sortie;
char Commande[500];
char Valeur[200];
CFileDialog dlg(false,"xls","*.xls");

  if(dlg.DoModal()==IDOK)
    {
    Sortie=dlg.GetPathName();

    if(ExcelRegistry(Valeur))
      {
      wsprintf(Commande,"[OPEN(\"%s\")]",Sortie.GetBuffer(Sortie.GetLength()));
      WinExec(Valeur,SW_SHOWDEFAULT);   // Lance Escel
      ExcelDDE(Commande);                      // Envoi l'instruction DDE
      }		
    }
  }

 Conclusion

Bien sur ce n'est qu'un exemple, moi je l'utilise pour créer un fichier et l'envoyer directement vers un logiciel d'analyse (REGRESSI)... Certains logiciels courants utilisent des liasons client-serveur de type OLE ou DDE. (WORD-EXCEL-ACCESS etc ...)

A vous de jouer....


NB :
Merci à MangaII pour sa classe d'acces à la base de registre (CRegistreUtil) .Il est bien ce petit gars...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

DOEVENTS EN VC++
Source avec Zip CONNEXION FLASH VC++

 Sources de la même categorie

Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro
Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip JOUR DE NAISSANCE par fredg19

Commentaires et avis

Commentaire de shuttleur le 05/06/2008 10:20:57

Salut BarthOlivier

Je viens de découvrir cette fonctionnalité de Windows, est ce qu'à ton avis il est sage de l'utiliser à des endroits critiques des applications qui conversent ?

Est ce qu'il y a un risque sérieux que le dialogue soit corrompu par d'autres applis, les messages soient perdus, retardés, etc ?

Merci d'avance.

Commentaire de BarthOlivier le 05/06/2008 14:02:47

Bonjour

C'est une bonne question. A choisir,si tu maitrises les deux applications, je partirais plutôt sur une structure TCP ou UDP pour des endroit critique. Ceci dit, que défini tu pas "endroits critiques".

Maintenant je programme a l'instinct / barbare, n'utilisant que très rarement ce genre de procédés. Je vais surement me faire tapper sur les doigts par les vrais informaticiens du site. (je ne suis qu'un électronicien un peu évolue <smiley> )

Sinon un serveur OLE est peut-etre plus pratique qu'un DDE je crois. Moi je n'avais pas le choix, donc je me suis pas posé la question. Tu as de nombreuses informations sur ce site qui pourront compléter tes questions.

Sinon si c'est juste pour dire à tel ou tel appli que tel ou tel événement est passé. préfère peut-être les Message Windows.

Toujours est il que l'on reste tributaire d'un OS non Temps réel.tout juste du temps partagé sans garantie de bande. Même en mettant la priorité très Hautes sur tes softs tu sera toujours coincé.

J'espere que tu trouveras une solution a ton problème

MisterMok

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,059 sec (3)

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