IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Comment exécuter une DLL écrite en Delphi avec RunDLL32 ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut Comment exécuter une DLL écrite en Delphi avec RunDLL32 ?
    Salut à tous

    Voila mon souci: on a un programme capable de lancer des DLL mais ce n'est pas Delphi. On a besoin de certaines routines. Je compte donc faire des DLL en Delphi pour palier à ce besoin.
    Seulement, le programme en question a besoin de RunDLL32.exe pour exécuter la DLL (il lance simplement un programme externe en fait).
    Lancer une DLL avec RunDLL32 ne me pose pas de problème.
    Seulement, la DLL en question doit avoir des chaines de caractères en paramètre. Et je ne connais pas la méthode correcte pour faire ça.

    J'ai fait pour mes tests une méthode toute bête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure Execute(Value: PChar);stdcall;
    begin
      ShowMessage(string(Value));
    end;
    ...
    exports
      Execute;
    Et je lance RunDLL32 de cette façon:
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    runDLL32.exe "LeNomCompletDeMaDLL",Execute Youpi

    Mais évidemment, comme je m'y attendais, erreur de violation d'accès
    J'ai essayé avec const, var dans les paramètres et d'autres trucs mais rien n'y fait...

    Quelqu'un connait-il la méthode? Est-ce au moins possible de passer des chaines de caractères avec RunDLL32?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 674
    Points : 25 485
    Points
    25 485
    Par défaut
    et un ShortString ?
    normalement, on ne passe pas de chaine autrement que PChar, mais un ShorString c'est un tableau alloué, donc cela fonctionne très bien ... un const ou var, peut-être nécessaire

    avec un string, un const est indispensable, mais cela ne fonctionne qu'entre Exe et DLL delphi, car il faut créer la chaine (donc StrRec + Char) ...

    Ensuite, peux-tu mettre des paramètres ??? ne faudrait-il pas passé par ParamCount et ParamStr ???

  3. #3
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Ensuite, peux-tu mettre des paramètres ??? ne faudrait-il pas passé par ParamCount et ParamStr ???
    Ca alors Ca fonctionne. J'aurais jamais essayé
    Pour info, si on lance:
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    runDLL32.exe "LeNomCompletDeMaDLL",Execute "Youpi"

    On a ceci:
    • ParamStr(0) : c:\Windows\System32\RunDLL32.exe
    • ParamStr(1) : LeNomCompletDeMaDLL,Execute
    • ParamStr(2) : Youpi
    En gros, la DLL contient les mêmes paramètres que RunDLL32

    Merci c'est impeccable

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 674
    Points : 25 485
    Points
    25 485
    Par défaut
    C'est bon à savoir, je n'avais jamais essayé, mais comme normalement une DLL reçoit la ligne de commande de l'application appelante, c'est pour cela que cela m'a semblé possible !

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    C'est bon à savoir, je n'avais jamais essayé, mais comme normalement une DLL reçoit la ligne de commande de l'application appelante, c'est pour cela que cela m'a semblé possible !
    Je n'aurais jamais cherché par là si tu ne m'en avais pas parlé Du coup, plus besoin des paramètres et je m'affranchis de ce problème

    Pour information, si votre chaine de caractère ne contient pas d'espace, vous pouvez la mettre directement, sinon, mettez-là entre guillemets. De toutes manières, mettez les guillemets quelle que soit la situation, vous serez sûrs de votre coup

    Merci ShaiLeTroll

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 19
    Dernier message: 24/03/2014, 08h35
  2. Réponses: 1
    Dernier message: 11/04/2007, 11h45
  3. Comment exécuter une DLL ?
    Par chleuh dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 14h27
  4. Comment créer une dll Win32 sous Delphi ?
    Par Mickey.jet dans le forum Langage
    Réponses: 8
    Dernier message: 16/06/2005, 15h38
  5. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo