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 :

[Hook] Comment connaître la Form à partir d'un TPoint ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut [Hook] Comment connaître la Form à partir d'un TPoint ?
    Bonjour,

    Comment accéder à un tform de son application juste avec le handle....

    Merciii

  2. #2
    En attente de confirmation mail
    Inscrit en
    Juillet 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 50
    Points : 34
    Points
    34
    Par défaut
    remixtech,

    Est-ce que cela repond à ta question ?
    http://<br /> http://delphi.develop...santsapi<br />

  3. #3
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut
    Non non je voudrais avoir accé à cette form et les composants dessus ...

    Merci quand même ...

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut Re: [Handle] Trouver la form
    Citation Envoyé par remixtech
    Bonjour,

    Comment accéder à un tform de son application juste avec le handle....

    Merciii
    Je ne comprend pas trop pourquoi tu désires faire cela. Il existe d'autres méthodes pour accéder à un TForm ?
    Excuse ma question qui doit te paraître stupide mais Pourquoi ? et dans quel contexte est-ce que cela peut-être utile ?

  5. #5
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut
    Salut,

    Je m'explique j'ai un Hook sur la principale
    Je crée les secondaires (il peut y'en avoir plusieurs)
    Mais le hook doit réagir différement selon les secondaires...

    En faite je ne sais même pas comment avoir le handle de la secondaire
    j'ai juste le Tpoint de la souris ....

    Je sais c'est chaud ....
    Si vous avez pas compris n'hésitez pas à me faire répéter merci ...

  6. #6
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut ...
    Voila le code de mon hook

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    function MouseProc(nCode: integer;
      wParam,
      lParam: longint): longint; stdcall;
     
      function GetClassNameEnh(Handle: Hwnd): string;
      var
        ClassName: PChar;
        Buffer: integer;
      begin
        Buffer := 40;
        getmem(ClassName, Buffer);
        windows.GetClassName(Handle, ClassName, Buffer);
        Result := ClassName;
        Freemem(ClassName);
      end;
     
    var
      P: TPoint;
        cursorPos: TPoint;
      control: TControl;
        nom: string;
    begin
      if (nCode < 0) then
        Result := CallNextHookEx(HookID, nCode, wParam, lParam)
      else if ((wParam = WM_RBUTTONDOWN) or (wParam =
        WM_RBUTTONUP) or (wParam = WM_LBUTTONDOWN)) then
      begin
        GetCursorPos(P);
     
     
     
     
          if (nom = 'weber') and (Pos('Internet Explorer_', GetClassNameEnh(WindowFromPoint(P))) <> 0) and ((wParam = WM_RBUTTONDOWN) or (wParam =
          WM_RBUTTONUP)) then begin
     
     
     
     JE CHERCHE à savoir sur quelle tform est weber ( twebbrowser ) 
    Et pouvoir faire 
    tform.menupopup.popup(....);
     
     
     
     
          Result := HC_SKIP;
     
        end
        else
          Result := CallNextHookEx(HookID, nCode, wParam, lParam);     
     
        if (Pos('Internet Explorer_', GetClassNameEnh(WindowFromPoint(P))) <> 0) and ((wParam = WM_RBUTTONDOWN) or (wParam =
          WM_RBUTTONUP)) then  begin
     
     
          Result := HC_SKIP;
                     end
     
     
       else if GetClassNameEnh(WindowFromPoint(P)) = 'TCoolBar' then
        begin
     
          Result := HC_SKIP;
        end
        else
          Result := CallNextHookEx(HookID, nCode, wParam, lParam);
      end
      else
        Result := CallNextHookEx(HookID, nCode, wParam, lParam);
    end;
    Merci

  7. #7
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Si tu as le handle de ta fenêtre, tu dois pouvoir parcourir toutes les fenêtres de l'application et comparer les handles

  8. #8
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut
    Oui c'est vraie, mais en faite j'ai pas le handle
    J'ai juste un tpoint ...

    Ca me désespere ...

    Merci d'avance

  9. #9
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut Re: [Hook] à partir d'un Tpoint connaitre la form ....
    Citation Envoyé par remixtech
    Bonjour,

    Comment accéder à un tform de son application juste avec le handle....

    Merciii
    Alors pourquoi dire que tu as le handle ?

  10. #10
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut
    En faite je l'avais au début, sur mon ancien hook, enfin je pensais l'avoir.

    Mais le problème c'est que j'avais trop de hook. un par Tform dynamique créé et c'était un gros bordel...
    Donc j'ai voulu centralisé sur un hook mais je n'arrive pas à trouver le handle du composant qui se trouve en dessous du pointeur enfin plutot la tform....

    je suis désolé ...

  11. #11
    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
    En utilisant WindowFRomPoint(), tu peux récuperer le handle de la fenêtre ainsi que les composants graphiques qui la compose.
    Plus d'infos.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
      point: TPoint;
      hfenetre: HWND;
      ClassName : Array[0..255] of Char;
    begin
      getCursorPos(point);
      hfenetre := WindowFRomPoint(point);
      GetClassName(hfenetre,classname,SizeOf(ClassName)); 
    showMessage('Handle de la fenêtre : '+intToStr(hfenetre)+#13+#10+'ClassName : '+Classname');
      ...
    end;
    PS: Je n'ai pas testé.

  12. #12
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut Rémi
    Merci....
    Beaucoup ca fonctionne

    Merci encore c'est génial !!!

  13. #13
    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
    Oublie pas le tag "résolu"

  14. #14
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut ...
    Hargh ca marche pas si bien que ca ...
    Les handles sont différents ...

    Je fais un showmessage(inttostr(handle));
    A la création d'une fiche
    et la fonction que tu m'as donné me donne un autre handle...
    Je regarde ce que ca peut être...

    Merci quand même.

  15. #15
    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
    c'est normal que le handle diffère si ta fiche est recréé, à chaque création un handle est attribué mais pas forcement le même, ta fiche aura le même pendant toute la durée de sa "vie" mais dès qu'elle est détruite et recréé elle en reprend un autre, pareil pour tous les composants qui la compose.

  16. #16
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut ...
    Non non

    Je veux dire que le handle de la fiche et du webbrowser est différent du handle donné , le classname me donne _InternExplorerServer
    Il faut que je vois comment je peux récupérer ca...
    Si vous avez une idée

    merci

  17. #17
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut ...
    Une petite idée :

    Le parent du twebbrowser c'est Tform ? non
    Y'a pas moyen de trouver le parent avec les api ?

    Autre solution :
    Le hook ne peut pas dire d'ou ca vient ?

    Merciii

  18. #18
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut
    C'est bon

    C'est juste que c'est le parent du parent du parent
    c'est un controle compliqué

    new := GetParent(hfenetre);

    new := GetParent(new);
    new := GetParent(new);
    showmessage(inttostr(new));

    Merci

  19. #19
    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 Re: ...
    Citation Envoyé par remixtech
    Y'a pas moyen de trouver le parent avec les api ?
    En utilisant GetParent()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    hParent := getParent(hFenetre);

  20. #20
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut ..
    Désolé on a du se répondre en même temps en tout cas merci beaucoup !

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

Discussions similaires

  1. [C# 2.0] Comment ouvrir plusieurs form à partir d'un thread
    Par Sidi-Bou dans le forum Windows Forms
    Réponses: 6
    Dernier message: 17/10/2008, 12h25
  2. Réponses: 3
    Dernier message: 02/04/2007, 20h37
  3. Comment ouvrir Outlook Express à partir d'une form ( Form's buider d'oracle)?
    Par Fleur-Anne.Blain dans le forum Outlook Express / Windows Mail
    Réponses: 3
    Dernier message: 17/07/2006, 11h15
  4. Réponses: 2
    Dernier message: 16/10/2005, 14h07
  5. [Winform][C#]Comment lancer une forme à partir du menu
    Par rb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/06/2005, 17h01

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