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

WinDev Discussion :

Effectuer un appel de dll


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 221
    Points : 185
    Points
    185
    Par défaut Effectuer un appel de dll
    Bonjour , j'ai besoin de faire appelle à une dll et je coince

    Dans delphi je creais une DLL de la forme suivante ( exemple pour comprendre)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    library Registry32_64;
    uses
      SysUtils,  Classes;
     
    {$R *.res}
    function Somme(A, B : Integer): Integer; stdcall;
    begin
       Result := A + B;
    end;
     
    function Multip(A, B : PAnsiChar): PansiChar; stdcall;
    begin
       //A est une chaine de carracters
       //B est une chaine de carateres
       Result := 'J''ai trouvé' ;
    end;
     
    exports  Somme; //Sans précision, le nom d'exportation sera "Somme" et l'index 1
    exports  Multip ; //  sans précision
     
    begin
    end.
    Dans Windev , là je coince

    j'appelle la dll

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppelDLL32("Registry32_64", "Somme" ,SAI_A,SAI_B)
    mais comment je recupere la valeur de retour ?

    Help.

    Merci

  2. #2
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Dés fois il faut un peu lire la doc ^^

    http://doc.pcsoft.fr/fr-fr/?3014003&...n&q=AppelDLL32

    Exécuter une fonction d'une DLL externe ou de l'API Windows identifiée par son nom
    <Résultat> = AppelDLL32(<Nom de la DLL> , <Nom de la fonction> [, <Paramètre 1> [, <Paramètre 2> [, ... ]]])
    <Résultat> : Entier sur 4 en 32 bits, entier sur 8 en 64 bits
    Résultat de l'exécution de la fonction <Nom de la fonction>. Ce résultat peut être un code d'erreur. Le type de ce résultat dépend de la fonction exécutée. Consultez la documentation de cette fonction pour obtenir plus de détails.
    Si le résultat de la fonction est d'une taille supérieure à la taille de l'entier de la plate-forme, il ne pourra pas être récupéré.
    Si cela ne fonctionne pas il faudra sûrement jeter un oeil à la convention d'appel de la DLL (cdecl ou stdcall, de mémoire). Cette convention d'appel influence la manière dont les valeurs de retour sont renvoyées sur la pile.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  3. #3
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 221
    Points : 185
    Points
    185
    Par défaut
    Bonjour

    je commence toujours par lire la doc , mais là entre lire et comprendre
    y a un pas que je n'arrive pas à faire.

    j'ai fait x essai et entre les plantages et les rien.

    cordialement

    Fred

  4. #4
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Donc, pour récupérer la valeur de retour de l'appel à ta fonction delphi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeurDeRetour est un <type de ta variable attendu> = AppelDLL32("Registry32_64", "Somme" ,SAI_A,SAI_B)
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

Discussions similaires

  1. Appel de dll
    Par david71 dans le forum WinDev
    Réponses: 3
    Dernier message: 08/12/2005, 14h58
  2. [AJAX] Effectuer plusieur appel ajax
    Par shwin dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/10/2005, 16h40
  3. DLL classique - appel de DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 8
    Dernier message: 12/07/2004, 14h34
  4. Appels fonctions DLL
    Par Micka91 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 17/02/2004, 17h32
  5. [VB6] [Langage] VB6 et les appels de dll
    Par Dave63 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 16/01/2003, 18h20

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