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 :

[THandle][DLL] Composant dynamique et THandle


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut [THandle][DLL] Composant dynamique et THandle
    Bonjour,
    Je souhaite créer un TWebBrowser dynamiquement dans un dll. Pour cela je dois utiliser la procédure Create de TWebBrowser. Dans l'aide on trouve cela :
    Syntaxe Delphi :
    constructor Create(AOwner: TComponent); override;

    Avec AOwner la fenêtre qui sera le propriétaire de mon TWebBrowser c'est à dire le composant qui sera chargé de la destruction de celui-ci.
    Le problème c'est que ne connais que le THandle de ce futur propriétaire.
    Est-il possible de récupérer un TComponent avec un THandle?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Cela ne marche pas si tu transmets simplement nil à la place ? (et tu seras chargé de la destruction du composant).
    "It's more fun to compute !"

  3. #3
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Pourquoi ne pas utiliser TApplication dans ce cas là?
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Ca à l'air de fonctionner en mettant à nil. Pour ce qui est de TApplication c'est impossible car je développe une dll.Merci

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Pour ce qui est de TApplication c'est impossible car je développe une dll
    En incluant Forms dans ta clauses uses, ça doit être possible
    "It's more fun to compute !"

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Lors de la création dynamique de mon TWebBrowser avec cretae je passe le paramètre nil, l'objet a l'air de bie nse créer. Je passe ensuite le Handle du parent et la ca plante. En fait dès que j'accède en écriture ou en lecture à mon objet la dll plante.
    Avec TApplication comme puis je résoudre le problème? Quelle procédure utiliser? Il n'existe pas une fonction pour transformer un Handle en TComponent?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    pourquoi veux tu le handle? si c pour pouvoir detruire la form de la dll qd tu veux il suffit d'ajouter une fonction dans la dll detruisant la form et de libérer la dll!

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Concrètement voila ce que je veux faire :
    Je code une dll qui contient une fonction attendant en paramètre le Handle d'une fenêtre appartenant à une application externe. Le but de la fonction est d'ajouter un TWebBrowser à cette fenêtre en utilisant le Handle passé en paramètre, ce qui donne :

    function MaFunction(MonHandle : THandle);sdtcall;
    var
    ListObjectBrowser : TObjectList;
    begin
    ListObjectBrowser:= TObjectList.Create;
    ListObjectBrowser.Add(TWebBrowser.Create(OwnerTrouvéAvecMonHandle));
    TOleControl(ListObjectBrowser.Last).Parent:= OwnerTrouvéAvecMonHandle;
    end;

    Mon problème est de convertir le Handle passé en paramètre en TComponent ou en un autre Type acceptable par Create et Parent

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Curieusement dans une application normal le code suivant fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var
      Form1             : TForm1;
      ListObjectBrowser : TObjectList;
      HSelf             : THandle;
    implementation
     
    {$R *.dfm}
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      HSelf:= self.Handle;
      ListObjectBrowser:= TObjectList.Create;
      ListObjectBrowser.Add(TWebBrowser.Create(TComponent(nil)));
      Windows.SetParent(TOleControl(ListObjectBrowser.Last).Handle, HSelf);
    end;
    Si maintenant je mes ce code dans une dll et que je remplace le Handle du PArent par celui passé en paramètre à ma fonction le tout compile mais une fois appelé par une application externe cela plante. Une idée?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    as tu essayé en faisant comme la méthode qui marche cad en faisant une fonction dans la dll qui renvoie son handle et ....

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    C'est bon on m'a donné la solution, il faut utiliser la méthode FindControl en lui passant enparamètre le Handle du composant et et il renvoi un Control.

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

Discussions similaires

  1. [PowerBuilder] Fonction DLL en dynamique
    Par deltar dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 30/01/2006, 14h25
  2. problème de destruction de composants dynamique
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 23/08/2005, 10h39
  3. [Dll] Chargement dynamique a base d'index
    Par Clorish dans le forum Langage
    Réponses: 20
    Dernier message: 25/03/2005, 14h19
  4. [FLASH MX] Nom de composant dynamique
    Par bobgeldof7 dans le forum Flash
    Réponses: 2
    Dernier message: 12/11/2004, 23h07
  5. [JTabbedPane] Accès à des composants dynamiques
    Par SamRay1024 dans le forum Composants
    Réponses: 8
    Dernier message: 26/05/2004, 13h04

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