Problème avec FindWindowEx

Résolu
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022 - 21 avril 2007 à 23:59
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 22 avril 2007 à 09:25
Bonjour
Je n'arrive pas à utiliser la fonction FindWindowEx : elle me renvoie toujours 0.
Par exemple j'ai fait un essai avec NotePad  et la fenêtre enfant "Police"

Private Sub Essai()
Dim tWnd As Long, bWnd As Long
    tWnd = FindWindow(vbNullString, "Sans titre - Bloc-notes")
    bWnd = FindWindowEx(tWnd, 0&, vbNullString, "Police")
    MsgBox tWnd & " - " & Hex(tWnd) & vbCrLf & bWnd & " - " &  Hex(bWnd)
End Sub

J'ai essayé en mettant la classe de la fenêtre child au lieu de mettre son titre, j'ai essayé les deux aussi
J'ai vérifié avec un autre prog (WinID) que les paramètres étaient bons (les titres de fenêtre et les classes)
J'obtiens le bon handle pour la fenêtre parent puis bWnd est égal à 0 .......

Où se trouve mon erreur ??? mes erreurs ????? 
Merci

4 réponses

Utilisateur anonyme
22 avril 2007 à 00:11
Salut,

Chez moi, la bôite de dialogue police n'est pas un enfant de notepad (spy++).





__________
 Kenji
1
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
22 avril 2007 à 01:03
Salut
Merci de ta réponse rapide.

Effectivement, j'ai téléchargé SPY++ et dans l'arborescence , la boîte de dialogue Police apparaît au 1er niveau ,juste sous le Desktop mais si je fais clic droit dessus puis propriété , dans l'onglet Windows , il est écrit  " Parent Window"   000603B6 "qui est, à ce moment-là,  le handle du Bloc-notes.

Je suis perdu ; pourquoi dans ces boîtes de dialogue Police est un enfant du bloc-note (comme indiqué dans WinID ) alors que dans l'arborescence non ? Je débute et je dois peut-être (certainement) tout mélanger .... L'arborescence n'indique pas à cette relation parent-enfant?
0
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
22 avril 2007 à 01:16
Merci encore

J'arrive maintenant à récupérer les handles de plusieurs fenêtres que je ne parvenais pas à obtenir , en les traitant avec FindWindowEx( 0& , 0& ; vbNullString , "nom de la fenêtre" ) ou même avec FindWindow.

Mais pourquoi dans WinID et dans Spy++ il est dit que le parent est une autre fenêtre (et pas le bureau) ???
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
22 avril 2007 à 09:25
J'avance une explication sans trop savoir si c'est juste.

La fenetre Police de Notepad semble effectivement etre une feuille fille. Mais c'est une ressource du système d'exploitation commune à plusieurs applications. Un peu l'équivalent d'une api windows mais pour une boite de dialogue.

Dans ce cas il est normal que tu l'as voie comme une fenetre autonome dans Spy++. Ceci dit, ce n'est tout de même pas une application indépendante, elle ne peut pas etre executé seule, elle doit etre lancé par (attachée à) un autre process.

Dans le cas présent,  la relation entre les 2 fenetres n'est pas une relation Parent/enfant comme on connais avec les feuilles mdi.
L'id présent dans le paramètre Parent n'est pas l'ID du process parent, mais l'ID du process initiateur de la relation.
En d'autre terme, la fenetre ne fait pas partie de l'espace d'execution du process (elle est indépendante) mais celui-ci en est tout de même propriétaire.

JE pense que mes explications ne sont pas très claire, mais c'est difficile d'expliquer quand soi-même, on ne maitrise pas tout le méchanisme.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
Rejoignez-nous