begin process at 2012 02 10 08:34:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

vendredi 17 novembre 2006 à 22:44:22 | EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

mikimike197

Membre Club
Bonjour à tous.

J'ai plusieures questions précises:

 - Peut-on utiliser un EXE programmé en Delphi comme une DLL (appel de fonctions de l'exe à partir d'une autre application avec passage d'arguments par valeur et par référence) qui serait utilisé par VBA Excel (ou Access) ? 

 - Si oui, quelles sont les précautions à prendre (correspondances de type par ex...) et quel est le code à utiliser sous Delphi et quel est celui à utiliser sous VBA ?

Merci d'avance pour votre aide...,....


Je précise que je ne maitrise pas l'écriture du programme en delphi (le programme est écrit par quelqu'un qui modifira son code suivant ce que je souhaite, mais je n'ai pas accès à celui-ci). Par contre, le prog en VBA, c'est moi qui l'écrit !
Ensuite, j'explique pourquoi VBA : tout bonnement parce que les données d'entrée et de sortie de mon prog se situent dans un tableur Excel (ou Access) et que je n'ai pas accès à un autre language à partir de mon boulo.

Mikaël, dit Platipu$.
[8D] The Lord Works in mysterious ways
samedi 18 novembre 2006 à 00:05:26 | Re : EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

f0xi

Membre Club Administrateur CodeS-SourceS

alors :

Peut-on utiliser un EXE programmé en Delphi comme une DLL

la reponse est non, car un Executable, qu'il soit ecrit en C, C++, Delphi, VB ou pur ASM ne possede pas les clauses "Exports" necessaire au partage de fonction comme a l'interieur d'une DLL.
a moins de pouvoir passer des pointeurs (entier 32bits) en ligne de commande a l'executable pour pointer sur la donnée source et la destination.
bien sur le programme doit connaitre le type de donnée a traiter de cette maniere.

Le mieux est d'ecrire une DLL (peu importe le langage), d'exporter les fonctions necessaires et d'ecrire un header (entete d'api qui contient la declaration des fonctions et structure necessaire a l'utilisation des fonctions de la DLL dans le langage de destination) pour chaque langage (vb, c, c++, delphi).

l'utilisation d'une DLL serat beaucoup plus simple que l'utilisation d'un EXE en ligne de commande. sinon il reste la solution de la creation d'un service de traitement de données (SDC)  qui fonctionne un peu comme un serveur local, auquels on transmets des requettes. bien sur, cela veux dire qu'il faut ecrire l'ensemble d'un moteur de requettes qui possederait sa propre syntaxe.

Autres solution encore possible, le hook d'adresse de fonction. mais la ca demande des competences de hacking assé avancée puisqu'il s'agit de recuperer l'adresse memoire des fonctions de l'executable et de les appelées dans notre programme.
cette derniere methode est encore moins facile a mettre en oeuvre sans parler des eventuelles et nombreuses violation d'accés memoire et du bloquage de ce procédé par les anti-virus/firewall actif.
 






Croc (click me)
samedi 18 novembre 2006 à 09:59:11 | Re : EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

Delphiprog

Administrateur CodeS-SourceS
On peut aussi, assez simplement, ajouter une interface COM à l'exécutable Delphi.
Tu pourras alors piloter l'application comme tu pilotes Excel ou Word avec ton application VBA.


May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

samedi 18 novembre 2006 à 23:09:49 | Re : EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

mikimike197

Membre Club
Merci pour votre aide, je sais maintenant que l'on ne peut utiliser un EXE comme une DLL.
Il n'est malheureusement pas possible de modifier l'EXE en DLL (l'exe est utilisé comme tel et il serait trop cher pour moi de demander de développer de exe en dll).

Cependant, je sais qu'il est pôssible en Cpp de mettre des arguments à la fonction "main" est d'appeler le programme en passant les arguments sous VBA avec la fonction Shell... Qu'en est-il avec le Delphi ?

[8D] The Lord Works in mysterious ways
samedi 18 novembre 2006 à 23:25:10 | Re : EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

mikimike197

Membre Club
Et comment se sert-on de cette fonction COM dont tu parles Delphiprog ?

Merci d'avance à vous tous...

[8D] The Lord Works in mysterious ways
dimanche 19 novembre 2006 à 02:13:28 | Re : EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

Loda

Membre Club
"Cependant, je sais qu'il est pôssible en Cpp de mettre des arguments à la fonction "main" est d'appeler le programme en passant les arguments sous VBA avec la fonction Shell... Qu'en est-il avec le Delphi ?" F0xi t'as dit: "a moins de pouvoir passer des pointeurs (entier 32bits) en ligne de commande a l'executable pour pointer sur la donnée source et la destination. bien sur le programme doit connaitre le type de donnée a traiter de cette maniere." Précison que la focntion shell appel une ligne de comannde. (au cas ou cela ne serrait pas évident pour toi) donc, oui. on peut faire cela. Mais si t'as plus d'une ou deux fonctions, ca risque de devenir chaud (comme l'a très bien expliquer f0xi). Si tu passe des string court ou des entier ça vas. Si tu doit passer des structure de donnée, c'est moins facile. Note que transformer un exe dont tu veux utiliser certaines fonctions en dll , bin c'est pas bien dur, ni long, ni cher. surement moins cher que d0ajouter un traitement de la ligne de commande. En fait ça dépend pas mal des fonction que tu doit exporter. si elle ne dépende QUE des paramètre, c'est super simple. sinon, ça devient plus compliquer. aussi une solution (moche) consite a envoyer des pression de touche à ton applic Delphi. (pour cliquer sur des bouton ou taper du text dans des Tedit). Mais c'est très moche. je pense que le plus simple c'est de faire une dll. bien sur, cela dépend de beaucoup de choses...
dimanche 19 novembre 2006 à 11:28:08 | Re : EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

Delphiprog

Administrateur CodeS-SourceS
Loda a dit : "je pense que le plus simple c'est de faire une dll. bien sur, cela dépend de beaucoup de choses..."
Si l'exe comprend des fiches (ce qui est fort probable), cela va gonfler la DLL et poser beaucoup de problèmes si le code repose trop sur l'interface utilisateur.

La solution de l'automation COM permet d'éviter ce problème majeur en proposant un moyen d'accès à l'application (jetez un oeil sur le fonctionnement de Word ou d'Excel en mode serveur automation COM).
Avant de poursuivre la discussion, jetez d'abord un oeil sur le code simple, mais démonstratif, de cette petite application : Création d'un serveur OLE Automation

Vous verrez, ce n'est pas compliqué du tout et ça peut vous donner des idées pour vos projets passés ou futurs

May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

mardi 21 novembre 2006 à 12:18:00 | Re : EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

cirec

Membre Club Administrateur CodeS-SourceS
Salut,
@ Delphiprog :
Merci pour ce lien très très instructif. Je n'avais même pas osé penser faire un serveur OLE Automation
étant persuadé que de toutes manières c'était trop compliqué ...
Le lien que tu nous offres cette fois démontre le contraire, en effet la compréhension et la mise en oeuvre sont d'une simplicité enfantine, même un débutant peut y arriver.

Merci beaucoup

 
@+
Cirec

mardi 21 novembre 2006 à 18:16:07 | Re : EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

Delphiprog

Administrateur CodeS-SourceS
Attention toutefois : cette simplicité n'est valable que pour Delphi. Sous d'autres langages ou environnemments de développement, c'est une autre paire de manches... Je suis heureux que tu aies trouvé ce lien utile à ta connaissance.
jeudi 30 novembre 2006 à 22:52:59 | Re : EXE en Delphi utilisé comme DLL à partir de VBA ou d'un prog C++

mikimike197

Membre Club
Merci Delphiprog pour ce lien.

Toutefois, les exemples concernent le pilotage de Excel par OLE sous Delphi, mais ce qui m'intéresse, c'est le contraire: appeler des fonctions de l'EXE à partir de Excel.
De plus, la déclaration du serveur OLE de l'EXE dans le registre nécessite t-il d'avoir les privilèges administrateurs sur le poste ?

Merci de votre aide.

[8D] The Lord Works in mysterious ways


Cette discussion est classée dans : exe, vba, partir, prog, delphi


Répondre à ce message

Sujets en rapport avec ce message

Sortir un EXE de delphi 6 [ par webazard ] Bonjour voila le soucis j ai fais mon pt prog avec delphi6 je fais F9 je fais mumuze avec ok Je ferme tout et je nouvre que l'exe que delphi ma donner BESOIN D'AIDE [ par adjena ] Existe-t-il une ruse à partir d'un exe delphi qui permette de désactiver la demande de password après un écran de veille. C'est à dire qu'après que l' Arreter un prog delphi ? [ par thonyboy ] Bonjour a tous. J'ai un petit souci. J'ai fait un prog delphi 7 qui tourne en continu 24H/24H. Ce programme possede un bouton "Quitter" pour bien sur compiler un executable a partir d une appli delphi [ par MoveX ] bonjour !je voulais savoir si l etait possible de compiler un executable a partir d une appli delphi deja compilee? je pense que oui car cest le cas d Controle du INPUT/OUTPUT dune app, extern (console) [ par lemongreen ] Bonjours,En language C ma question serait sur les captures stdout and stdin d`une application externe. Cependant c`est en delphi (pascal) que je tente Passer une commande à un exe... [ par ellde ] Bonjour à tous, Voilà j'ai 1 logiciel de gestion fait en Delphi 4 qui gèrent des fiches (salariés, employeurs etc...). Je dois réaliser un logiciel tj Peut on créer un EXE à partir de son application ? [ par helmis ] Peut on créer un EXE à partir de son application ? Sauvegarder une BD sql server à partir du Delphi [ par dalatifa ] salut tt le monde,je veux faire la sauvegarde et la réstauration d'une base de données Sql Server 2000 à partir du Delphi et j'ignore les instructions Importation Decision cube vers delphi 2005 [ par DGPat ] Bonjour, Un outil que j'aimais beaucoup et facile pour la conception dans delphi 7 n'existe pas dans delphi 2005, a savoir Decision Cube, l'importati Kernerl32.dll Pb lors du lancement de mon appli. [ par diwilbo ] Bonjour à tout le monde, C'est la premiere fois que je post un message alors on vera bien si c'est efficace !! Donc voila mon probleme : J'ai prog


Nos sponsors


Sondage...

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,388 sec (4)

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