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

Langage Delphi Discussion :

Comment intercepter une fonction d'une DLL mais pas les autres ?


Sujet :

Langage Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Comment intercepter une fonction d'une DLL mais pas les autres ?
    bonjours a tous

    j'ai une application qui comunique avec une dll pour faire fonctionner un peripherique en USB

    je connais la fonction et je voudrais la devier vers une autre fonction de ma conception

    exemple :

    Mon application ----->dll pour le peripherique

    je voudrais mettre une Dll entre la liason :

    Mon application ------>Ma dll ---->dll pour le peripherique

    dans ma dll je voudrais intercepter une partie de la fonction mais pas les autres fonctions je voudrais quelles soient rediriger vers la dll d'origine

    Pour plus de precision :

    exemple : la fonction s'appel 'usbcommand' dans cette fonction on envois une variable 'OPEN' et je voudrais que cette variable enclenche une procedure et pour ce qui est tout le reste des variables soit diriger vers le DLL d'origine


    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    pourquoi ne pas redéclarer toutes les fonctions, un peut comme un Wrapper :
    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
     
     
    function dll_usb : LongBool;stdcall;external 'c.dll';
    function autre_dll_usb : LongBool;stdcall;external 'c.dll';
     
    function truc_que_je_veux_intercepter : LongBool;stdcall;
    begin
     ...
    end;
     
    function truc_que_j_ignore : LongBool;stdcall;
    begin
     result := autre_dll_usb;
    end;
     
    exports
     truc_que_je_veux_intercepter name 'dll_usb';
      truc_que_j_ignore name 'autre_dll_usb';

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci pour ta reponse
    mais c'est pas vraiment a quoi je pensai
    voila la fonction qui est declare dans la dll d'origine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    function usbcommand(command: integer; param: integer; blok: integer): integer; external 'usbcom.dll' name 'usbcommand';
    et je dois retourne une valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result := usbcommand(1,11,0)
    ce que je veux c'est quand la variable command est = a 1 ou 3 ou 4 et que
    les autres valeurs 5 ou 6 ou 7 que le function soit rediriger vers la dll d'origine

    merci d'avance ..

  4. #4
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Bah je comprends pas.
    Smyley t'as donné une piste.
    Redeclarer tous les fonctions exporter de la dll d'origine.
    Ensuite, dans le cas de a fonction usbcommand tu teste et redirige vers la dll d'origine.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre réponse

    En faite il y a qu'une fonction avec des variables et c'est avec la variable 'Command' ou je veux intervenir

    Si la variable 'command' passe a 1 je met mon code si elle passe a 2 je laisse la dll d'origine s'occuper de ça..

    Merci

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. Comment utiliser une fonction dans une fonction
    Par hatenaku dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2008, 20h00
  3. comment utiliser un programme comme une fonction dans une macro exel
    Par ERICKO dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/10/2007, 23h39
  4. comment creer le titre d'une legend par une fonction javascript
    Par raul_le_vieux dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/06/2007, 16h18
  5. Réponses: 4
    Dernier message: 17/03/2004, 17h24

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