CONTRÔLER LES CONTRÔLES D'UN AUTRE EXE

SiZiOUS Messages postés 69 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 novembre 2006 - 21 avril 2004 à 21:24
shell13010 Messages postés 73 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 12 mai 2013 - 17 févr. 2010 à 02:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22078-controler-les-controles-d-un-autre-exe

shell13010 Messages postés 73 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 12 mai 2013 1
17 févr. 2010 à 02:48
Salut,

J'aurais une question..

donc j'ai une fenetre qui a un Tedit mais sans bouton donc j'aurais aimer savoir si je pouvais simuler la touche "entrer"

malgrer que j'ai fait des testes toujours le meme problème.

Donc si vous auriez une idée sa serais bien de la partager.

merci d'avance
Utilisateur anonyme
24 déc. 2007 à 10:31
Salut,

pour TComboBox c'est un peut différent mais ça fonctionne :

Var S : String;
begin
S := 'Item2';
SendMessage(ComboBox1.Handle, CB_SELECTSTRING, -1 , LongInt(S));
end;

Je l'ai fait en locale mais ça fonctionne aussi sur une autre application

Et si c'est une TListBox :
SendMessage(ListBox1.Handle, LB_SELECTSTRING, -1 , LongInt(S));

wParam définit à partir de quel index la recherche commence ...
-1 signifie toute la liste
kacola Messages postés 30 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 10 janvier 2008
19 mai 2007 à 15:10
Bonjour,
Je cherche à prendre le contrôle d'une application, mais j'ai juste un petit problème, je prends bien le contrôle des boutons, Tedit, mais je n'arrive pas à changer le texte d'un Combobox.
C'est un Combobox qui n'a le choix qu'entre 'Plateau' et 'Chargeur de documents' (c'est pour mon scanner)

J'ai essayé d'envoyer la key 'VK_Down'.
J'ai essayé d'envoyer le texte 'Chargeur de documents': SendMessage(ComboHandle,WM_SETTEXT,0,DWord(Pchar('Chargeur de documents')))
Mon 'ComboHandle' est bon (vérifié avec un autre prog).
Mais rien ne marche, il reste sur 'Plateau'!.

J'ai besoin de votre aide.

Kacola
Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
15 janv. 2005 à 22:08
ca y ai j'ai trouver
après avoir chercher bocou !

la solution tien en 3 lettres = (nil).

je posterai ma source bientot.

Salut
Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
14 janv. 2005 à 19:09
Salut,

ce que je cherchais à faire c'est une source ki comme
son nom l'indique:

Controler une application externet par script.

Exemple:
tu fai un fichier text.txt comme suit:
Fen: Calculatrice
Bt : 5
bt : +
bt : 2
bt : entré

et tu fait LeProg.exe text.txt

et ca ferai sur la fenetre calculatrice, 5+2 entré

Filipe

PS: je chercher encore
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
31 déc. 2004 à 09:11
Le tout est de retrouver le handle du Edit qui t'intéresse :
- Enumérer les fenêtres principales : fonction EnumWindows
- Choisir la bonne (nom de la fenêtre) -> handle HndlMain
- Enumérer (récursivement) les controles fenêtrés enfants : fonction HndlChild:=GetWindow(HndlMain,GW_CHILD)
- Trier les TEdit : fonction GetClassName(HndlChild,...,...)
- Trouver le bon !!!!!

ou utiliser un programme WinSight32 (fourni avec Delphi (?)) ou OpenForms et recopier la valeur du handle (qui est modifié à chaque exécution)

Pour l'aide en français, demande à Google !

Ken@vo
Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
30 déc. 2004 à 22:47
Sinon sait tu ou je peux trouver une aide en francais
qui parle des handle, WM_Gettext, WM_copy...etc...

En solution compliké comment fodrait il faire ?

Filipe
Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
29 déc. 2004 à 16:05
Ptit bug,

Ton programme arrive à trouver les TEdit de simul car tu connais
leurs valeurs (.text) de départ:

H3 := HandleOfChild(MH,'TEdit','',H2); // Ici '' (3eme parametres)

Lors de la création de Simul (dans Delphi) lorsque je met par ex:
Edit1.text à 'Kenavo' au lieu de ''
L'Edit1 ne sera pas modifier ! (les autres si car toujour '' )

Comment faire pour ne plus avoir ce problème ?
Car on ne connait pas dans la plupart des cas comment à été fait le prog externe.

Une solution ? Simple de préférence.

Filipe
Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
28 déc. 2004 à 22:32
7/10 Bravo Kenavo !

Bonne source

Filipe
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
28 déc. 2004 à 08:35
Pour vérifier (ou simplement lire) le contenu d'un TEdit, on ne peut pas utiliser la fonction GetWindowText, le TEdit faisant partie d'un process externe à notre propre appli. Il faut utiliser le message WM_GETTEXT :

function LitTEdit(EditHandle : THandle) : string;
var
p : PChar;
i : Integer;
begin
p := StrAlloc(256);
i := SendMessage(EditHandle,WM_GETTEXT,256,integer(p));
Result := String(P);
StrDispose(p);
end;
Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
27 déc. 2004 à 18:22
merci pour cette source

Comment faire en sorte de vérifier que tout c'est bien passé ? En gros pour lire le contenu d'une editbox.

Fil
cs_hendrix Messages postés 65 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 18 novembre 2008 1
24 avril 2004 à 22:32
Merci pour ce source (c'est moi qui ai posé la question dans le forum).

Je m'empresse de tester et surtout de comprendre :-)

Et encore bravo !
SiZiOUS Messages postés 69 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 novembre 2006
21 avril 2004 à 21:24
Finalement tu l'as fait, et je vois que ton exemple est cool ;)
Note : je suis pas seul a avoir fait ce petit prog!
JROD aussi :)
Rejoignez-nous