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

VB 6 et antérieur Discussion :

Est-ce qu'un bouton ou une text-box est une fenêtre fille ?


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Est-ce qu'un bouton ou une text-box est une fenêtre fille ?
    Hello happy tax payers !

    Ma question peut vous sembler bizarre, mais je me suis lancé dans le projet d'analyser la programmation du démineur... J'ai bien le droit, non ?

    Alors j'obtiens le handle de la fenêtre du démineur, et je cherche a énumérer ses fenêtres filles. Eh bien ne voilà-t-il pas que EnumChildWindows me renvoie "false" dès le premier appel.

    J'aurais juré (au moins s'il était programmé en VB6) que le menu, les boutons et les fenêtres de texte étaient des "child windows", avec chacune son handle, son modèle de fenêtre et tout ça...

    Est-ce que je me trompe ?

    Merci à tous

    AMIcalement.

  2. #2
    Membre régulier
    Pas de réponse... Je vais poser ma question différemment : quelle relation de "filiation" y a-t-il entre une form et un bouton présent sur cette form ?

    Ou bien encore, quelle information appartenant à la form faut-il utiliser pour atteindre (par programme) le bouton ? J'avais (sans doute naïvement) cru que l'API "EnumChildWindow" devait le permettre, donnant le handle d'une "fille" connaissant celui de la mère, mais je pense que c'est pas ça : celle-ci doit s'appliquer aux fenêtre fille, comme dans les onglets d'Excel.

    Je vais encore chercher, mais si quelqu'un peut - ou veut - m'éclairer, il sera le bienvenu.

    AMIcalement.

  3. #3
    Rédacteur/Modérateur

    Salut

    De mémoire, l'objet form a une collection de types Controls que l'on peu énumérer
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Obj As Control
    For Each Obj In Me.Controls
         MsgBox Obj.Name 
    Next
    En gérant le fait qu'un contrôle peut avoir ou non un HWND et la propriété Parent , je ne sais pas si cela fait avancer le chemilibliccccc
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  4. #4
    Membre régulier
    Merci de ta bonne volonté, ProgElect.

    Il va falloir que j'approfondisse encore, mais mon objectif est de créer une appli VB6 qui va "attaquer" une appli Windows beaucoup plus générale. Pour mon projet, par exemple, je pourrais prendre pour cible le Démineur : j'ai un raccourci, je le copie et le colle dans une textbox "Programme", puis je lance le programme par
    Code vb6 :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    PID = Shell(Programme.Text, 1)

    Après, j'obtiens le handle de sa fenêtre avec ce petit bout de code trouvé je-ne-sais-où :
    Code vb6 :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Function GetWindowHandle(id As Long) As Long
    'Renvoie un handle de fenêtre à partir d'un id de processus
    Dim tempHwnd As Long
    GetWindowHandle = 0
    tempHwnd = FindWindow(vbEmpty, vbEmpty)
    Do Until tempHwnd = 0
        If GetParent(tempHwnd) = 0 Then
            If id = ProcIDFromWnd(tempHwnd) Then
                GetWindowHandle = tempHwnd
                Exit Do
            End If
        End If
        tempHwnd = GetWindow(tempHwnd, GW_HWNDNEXT)
    Loop
    End Function

    NB J'ai aussi les déclarations qui vont bien de l'API USER32

    Mais après, je ne sais pas comment explorer les différents contrôles de cette fenêtre. J'ai un (vieux !) bouquin sur l'API Win32 (qui date de 1998 !) qui parle bien de "fenêtres filles", mais l'API "EnumChildWindows" me renvoie tout de suite 0...

    Ca serait marrant, de faire une programme qui joue au démineur, non ?

    AMIcalement

###raw>template_hook.ano_emploi###