Handle, Control ID, etc... Est-ce que quelqu'un peut être clair? [Résolu]

Messages postés
4
Date d'inscription
dimanche 20 août 2006
Dernière intervention
1 octobre 2008
- - Dernière réponse : midiennemi
Messages postés
4
Date d'inscription
dimanche 20 août 2006
Dernière intervention
1 octobre 2008
- 1 oct. 2008 à 18:46
Bonjour,
Depuis quelques jours, je recherche la solution à mon problème.
Vous allez donc me dire "Mais quel est-il ce problème?" donc je vous répondrais tout simplement:
Une application contient une zone de texte (à savoir que je n'ai ni le source de cette application (ce serait trop facile) ni même un petit SDK, rien, que dalle!!) dans une fenêtre. Je voudrais pouvoir envoyer du texte à partir de mon application vb.net vers cette application. Donc pour résumer graphiquement:

monApplication.vbNet {Zone de texte} => {boutonEnvoiTexte} =========> zoneTexteApplicationTiers.exe

Voila si c'est pas clair en gros mon application contient une zone de texte (ou pas... mais pour l'exemple elle en contiendra une :) ), en cliquant sur le bouton elle envoie du texte vers la zone de texte de l'application tiers (pour rappeler le contexte, ni SDK, ni source, rien).

Vous allez donc me répondre: "Eh ben! T'es nul ou quoi, t'as qu'a utiliser le handle de l'application et un SendMessage, pfff sont cons les gens qui ne savent pas utiliser l'API win32" et je répondrais tout simplement : "Eh ben! Tu crois pas que j'ai déjà essayé, regarde dans le premier post et tu verras que j'ai anticipé ta question" (je m'adresse effectivement aux gens capables de comprendre le mot anticipation :p ).

Bref, Lorsque je fais une petite recherche, je me retrouve avec un Handle (qui change évidemment à chaque fois que l'application est redémarrée), un ControlID (qui ne change pas), un ID de fonction (qui ne change pas) et un nom de type ATL:00890809 (attention ce nom est fictif mais c'était juste pour montrer comment il était organisé: "ATL:" + une suite de 8chiffres).

Pourriez-vous, s'il vous plaît, m'expliquer comment procéder?
Ais-je bien tous les éléments en main?
Comment construire ma fonction sendMessage() si c'est celle-ci qu'il faut utiliser?
Comment trouver le Handle du controle en sachant que le seul Handle que je puisse trouver grace a FindWindow() c'est celui de la fenêtre qui contient le controle mais pas celui du controle lui-même?

Aidez-moi s'il vous plait, je glisse doucement vers une dépression nerveuse certaine.

Merci d'avance :)
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
3
Merci
Si tu sais récupérer le HWND de la fenêtre contenant le textbox ET si le ctrlID du textbox ne change pas:
EnumChildWindows sur le HWND parent.
Dans l'enum, GetWindowLong avec GWL_ID sur chaque hChild envoyé par Windows à ta callback, quand ID correspondra à celui espéré, tu auras le handle du textbox.

ciao...
BruNews, MVP VC++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de BruNews
Messages postés
4
Date d'inscription
dimanche 20 août 2006
Dernière intervention
1 octobre 2008
0
Merci
Merci beaucoup :)
Aurais-tu le prototype de cette fonction a tout hasard?
Merci beaucoup encore une fois
Commenter la réponse de midiennemi
Messages postés
4
Date d'inscription
dimanche 20 août 2006
Dernière intervention
1 octobre 2008
0
Merci
Mmm... je viens de trouver le prototype... cela retourne un booléen????
J'aurais aimé avoir le Hwnd pas un bool... A moins que mon raisonnement soit faussé je ne sais pas...

<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function EnumChildWindows(ByVal hWndParent As System.IntPtr, _
   ByVal lpEnumFunc As EnumWindowsProc, ByVal lParam As Integer) As Boolean
Commenter la réponse de midiennemi
Messages postés
4
Date d'inscription
dimanche 20 août 2006
Dernière intervention
1 octobre 2008
0
Merci
OOOOOOOOOOOOOOoooooooooooh Désolé je n'ai pas lu jusqu'à la fin il faut que je crée un listHandle qui va me permettre d'avoir un childList... Okay désolé.
Réponse super-acceptée Merci énormément
Commenter la réponse de midiennemi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.