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 :

Lister les compos d'une autre appli


Sujet :

API, COM et SDKs Delphi

  1. #1
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut Lister les compos d'une autre appli
    Soit une appli graphique qui tourne.

    Elle présente des boutons, 1 champ Edit, 1 label.

    Comment récupérer le handle associé à ces objets ?


    Je cherche à envoyer un WM_PASTE au champ Edit.

    Sachant que j'ai regardé la FAQ et l'exemple concernant l'envoi de WM_CLOSE à une fenêtre; mais son adaptation ne semble pas fonctionner (msdn semble indiquer que c'est l'Edit qui doit recevoir ce message).

    Merci pour vos lumières
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Tu peux récupérer le handle de tous les descendants de TWinControl par leur propriété Handle.
    Mais pour faire effectuer un WM_PASTE à ton edit je te conseilles plutôt d'utiliser Perform :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1.Perform(WM_PASTE, ...);
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Arhhhh, il manque un détail dans les données du pb:

    Je n'ai pas les sources de cette appli, mais je veux créer un pgm en Delphi qui va (essayer d') envoyer WM_PASTE au champ Edit...

    Donc mon prog doit
    1/ récupérer le handle de l'autre appli
    2/ identifier le champ Edit
    3/ envoyer le message
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  4. #4
    Membre expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Points : 3 894
    Points
    3 894
    Par défaut
    regarde cette source de Nono40.

    Avec EnumChildWindows tu peux récupérer le handle de ton Edit dans ta fenêtre.
    Pour trouver le handle de ta fenêtre, utilise FindWindow ou FindWindowEx
    Mea est trop forte, elle flotte : mea coule pas !

    Basically this boot sector (Win95) code is 32 bit extension for a 16 bit patch to an 8 bit boot sector originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition.

    olance.developpez.com
    Servez-vous, profitez, abusez de la FAQ Delphi !!

  5. #5
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Merci aux contributeurs, voici le résultat :

    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
     
    program Paste2D1;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils,messages,windows,Classes;
     
     
    var
      monhandle,newhandle : THandle;
    Function EnumChildProc(H:THandle;HEdit:THandle):Bool;Stdcall;
    Var BuffClasse : Array[0..255]Of Char;
    Begin
        GetClassName (H,@BuffClasse,SizeOf(BuffClasse));
     
        if BuffClasse='Edit' then begin
           newhandle:=H;
           Result:=False;
        end;
    End;
     
    Begin
      //Le second paramètre de FindWindow est le titre de la fenêtre!
      monhandle := FindWindow(nil,'User ID');
      EnumChildWindows(monhandle,@EnumChildProc,newhandle);
      SendMessage(newhandle,WM_PASTE,0,0);
    end.
    J'ai un doute sur l'utilité du LParam à l'appel de EnumChildWindows, mais bon ça fonctionne, alors.....
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

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

Discussions similaires

  1. [AC-2007] Lister les tables d'une autre base
    Par zoom61 dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/06/2010, 22h16
  2. recuper les champs texte sous une autre appli (dos ou autre)
    Par marnoue dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2009, 06h51
  3. Lister les formulaires d'une autre base de données
    Par beaucy dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/09/2007, 09h43
  4. [ODBC] Intranet en PHP : Lister les tables d'une base Access
    Par fblouet dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/10/2003, 14h46
  5. Lister les tables d'une Base
    Par YanK dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 08/10/2003, 10h40

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