begin process at 2010 02 10 03:49:34
  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é :7 464 / 438

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 CALLOCATOR par troctsch
Source avec Zip HEAPCOLLECTOR par troctsch
Source avec Zip GÉNÉRE UN TABLEAU DE CARACTÉRE AU FORMAT C CONTENANT LE BYTE... par kertimanoff
FRACTIONS EGYPTIENNES par lptm974
BITOPERATOR par FrancoisGauthier

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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,811 sec (3)

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