[vb.net] Parcourir le texte contenu dans une fenêtre

trainkill Messages postés 29 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 24 juillet 2007 - 29 mars 2006 à 16:18
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 5 avril 2006 à 21:41
Explication : J'ai programmé une appli en vbnet qui lance un process externe. Celui-ci ouvre un certain nombre de fenêtres. Je dois attendre une fenêtre avec un nom donné, ce que j'arrive à faire (en bricolant plus ou moins).
Mais voilà j'aimerai en plus attendre qu'un certain texte apparaisse dans celle-ci. Ce qui est plus difficile à faire. Quelqu'un a une idée ? :D

Merci

13 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
29 mars 2006 à 16:40
Salut

Pour cela il faut utiliser les api windows.
Avec la capture des handles des zones de textes.
Normalment tu y arriveras.

Vas voir le site microsoft les webcasts de Mitsu des rencontres windows forms et tu auras les sources et les videos pour le faire.

Bon coding
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
29 mars 2006 à 19:49
Comment fais-tu pour trouver la fenêtre avec un nom donné ?

Il faut utiliser les handles, mais pas besoin d'API avec VB.Net c'est déjà inclus !

Redman
0
trainkill Messages postés 29 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 24 juillet 2007
29 mars 2006 à 20:24
ah oui ? j'ai pourtant cherché partout des methodes de vbnet mais sans succès je suis passé par des fonctions API. Je suis donc curieux de connaitre ces fonction en vb.net !
Merci d'avance
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
29 mars 2006 à 21:00
Pas mal d'objets on la fonction !!

Exemple :



Dim p
As Process = Process.GetProcessesByName("iexplore")(0)


p.Handle() ' Retourne le Handle en type System.IntPtr

Comment fais-tu pour trouver une fenêtre avec le nom ??

Redman
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
trainkill Messages postés 29 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 24 juillet 2007
30 mars 2006 à 09:47
Ah oui mais ça c'est pour lancer un processus, mais ça ne te permet que d'avoir le handle du *processus* et non pas de ou des fenêtres de celui-ci (enfin je crois).

Moi j'ai utilisé les fonctions API pour chercher les fenêtres :


Private
Declare
Function FindWindow
Lib "user32"
Alias "FindWindowA" (
ByVal lpClassName
As
String,
ByVal lpWindowName
As
String)
As
Integer

qui te renvoie le handle de la fenêtre à partir du nom de la fenêtre, si elle la trouve, 0 sinon. Pour l'inverse, je n'ai pas réussi à faire!

Essaies avec la fonction :

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" ( _
ByVal hwnd As Long, _
ByVal lpString As String, _
ByVal cch As Long) As Long' ou As integer je ne sais pas

Sinon comment à partir de ce handle pouvoir voir les éléments qui sont contenus dans la fenêtre, des zones de textes par exemple ou label, afin de rechercher une chaîne de caractère?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
30 mars 2006 à 09:57
Salut

http://blogs.microsoft.fr/mitsufu/archive/2005/10/19/12401.aspx

Pour les solutions et les videos.

L'application qui répond au problème est dans le projet winappMessage solution 2-1
Il faut clicker sur la souris et la bouge sur les autres fenetres.

Bon coding
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
30 mars 2006 à 10:19
Mais si c'est le Handle !!


Dim p
As Process = Process.GetProcessesByName("iexplore")(0)


p.Handle() ' Retourne le Handle en type System.IntPtr

Je pour démarrer c'est p.Start() ce que je t'ai donné retourne bel et bien le Handle, après faut savoir manipuler les handles c'est tout !

Redman
0
trainkill Messages postés 29 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 24 juillet 2007
30 mars 2006 à 10:50
>L'application qui répond au problème est dans le projet winappMessage >solution 2-1

Je vois pas de quoi tu parles désolé ??
0
trainkill Messages postés 29 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 24 juillet 2007
30 mars 2006 à 13:47
J'ai pas l'impression que c'est écrit en vb.net 2003 ? de toute façon je n'arrive pas à les lancer
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
30 mars 2006 à 14:46
Salut,

C'est du c# 2005, mais la traduction en VB 2003 est facile.
Car c'est de l'utilisation de l'API pur et dur, de spécifique à 2005.

C'est dans le répertoire \Solution2 - 1 - WinForms de l'archive.

Pour la traduction, il y a un traducteur sur le site developpez.com
http://convertisseur.developpez.com/

Bon courage.
0
trainkill Messages postés 29 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 24 juillet 2007
5 avril 2006 à 15:08
J'ai étudié un peu les sources, la fonction sendmessage à l'air pas mal. Mais voilà pour l'instant je n'arrive qu'à récuperer le titre de la fenêtre. J'aimerai savoir avec quel argument(s) utiliser cette fonction afin d'aller voir par exemple toutes les textboxes, examiner leur contenus etc ... afin de pouvoir par la suite simuler l'appui de touches "entrer" etc.

Merci encore
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
5 avril 2006 à 17:26
Bon si tu veux pas comprendre tant pis !

Redman
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 avril 2006 à 21:41
http://chgi.developpez.com/windows/commande/

http://www.secretswindows.com/index.php?rubrique=API&ssrubrique=B&ID=18&page=./api/detailfonction.php

http://www.vb-helper.com/howto_set_other_application_caption.html

'creation de message
http://www.vb-helper.com/howto_net_resize_form_without_api.html

voila quelques adresses, pou connaître les message il faut plonger dans les aPI

normalement
SendMessage(hwnd, WM_CLICK, 0, 0);
simule le click avec hwnd le hwnd du bouton biensur
0
Rejoignez-nous