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 :

[D2010] Comment contrôler une autre application ?


Sujet :

Langage Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 670
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 670
    Points : 7 040
    Points
    7 040
    Par défaut [D2010] Comment contrôler une autre application ?
    Comment contrôler une autre application ?
    (autrement que par OLE automation)

    Par exemple, comment modifier le contenu d'un Edit d'une autre application ?
    Sachant que je peux déjà connaitre son Handle (HWND) avec les API EnumWindows et EnumChildWindows, et son contenu avec GetWindowText.


  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 755
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 755
    Points : 13 349
    Points
    13 349
    Par défaut
    Avec l'UAC activé, tu peux oublier à moins que la cible autorise ce genre de message (ex. WM_SETTEXT) ou que ton application tourne avec des privilèges élevés.

    Merci qui ? Merci l'UIPI.

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 670
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 670
    Points : 7 040
    Points
    7 040
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Avec l'UAC activé, tu peux oublier à moins que la cible autorise ce genre de message
    Pour commencer, je vais tester sous XP, et pour Win7 il est coupé, donc là ça doit être bon.

    Citation Envoyé par Andnotor Voir le message
    (ex. WM_SETTEXT)
    Je vais tester.

    Citation Envoyé par Andnotor Voir le message
    ou que ton application tourne avec des privilèges élevés.

    Merci qui ? Merci l'UIPI.
    Je vais voir ...

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 670
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 670
    Points : 7 040
    Points
    7 040
    Par défaut
    Bon, j'ai testé vite fait hier soir, et ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       if SendTextMessage(_nHandle, WM_SETTEXT, 0, Edit.Text) = 0 then
          ShowMessage('pas glop !');
       PostMessage(_nHandle, CM_TEXTCHANGED, 0, 0);
    Par contre, pour récupérer le nouveau texte (pour vérification), il ne faut pas utiliser GetWindowText. J'ai supposé qu'un WM_GETTEXT s'imposait, et ça semble fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       nNb := SendTextMessage(_nHandle, WM_GETTEXT, 100, sz);
       if nNb = 0 then
          ShowMessage('pas glop !')
       else
          Edit.Text := LeftStr(sz, nNb);
    Je continue de creuser ...

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 755
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 755
    Points : 13 349
    Points
    13 349
    Par défaut
    D'un autre côté, l'inverse de GetWindowText est... SetWindowText

  6. #6
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 670
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 670
    Points : 7 040
    Points
    7 040
    Par défaut
    Bon, j'arrive à manipuler des boutons, edit, combobox, listbox, checkbox, ..., mais comment communiquer avec les onglets d'un TPageControl ?
    Comment donner l'ordre de passer à tel onglet ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/12/2006, 19h22
  2. Comment remplir les champs d'une autre application ?
    Par rico32fr dans le forum C++Builder
    Réponses: 6
    Dernier message: 19/06/2006, 08h54
  3. Réponses: 7
    Dernier message: 30/09/2005, 17h53
  4. Réponses: 4
    Dernier message: 25/07/2005, 14h24
  5. Réponses: 7
    Dernier message: 23/03/2005, 22h23

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