Page 1 sur 1

trouver une fenetre enfant

Publié : sam. 20/sept./2008 17:07
par supercdfr
Je voudrais savoir, dans un programme externe, comment trouver une fenetre enfant (child).
La fonction EnumChildWindows devrait me le permettre, mais je ne sait pas l'utiliser correctement. J'arrive a avoir tout une liste de hndl et de classname, mais comment trouver le nom de la fenetre qui m'interesse ?
Je ne suis pas sur que la fenetre qui s'ouvre soit une nouvelle fenetre ou un messagebox.

Je connais deja le handle du programme.

Publié : sam. 20/sept./2008 20:44
par Le Soldat Inconnu
voila un exemple

celui ci permet de rechercher parmis les enfant de "Program manager" (le bureau de window)

ca va te montrer commen ca marche

Code : Tout sélectionner

Global FindWindowName.s, FindWindowFind.l
Procedure FindWindowSearch(hwnd.l, lParam.l)
  Protected Tampon.s
  Tampon.s = Space(50)
  GetClassName_(hwnd, @Tampon, 50)
  
  If Tampon = "WindowClass_0" ; Non de l'objet rechercher
    Txt.s = Space(256)
    GetWindowText_(hwnd, Txt, 256)
    If Txt = FindWindowName
      FindWindowFind = hwnd
    EndIf
  EndIf
  
  ProcedureReturn #True
EndProcedure
Procedure.l FindWindow(Name.s)
  ; nom = nom de la fenêtre en cours
  ; valeur de retour de la procedure :
  ; <> 0 : OK
  ; = 0 : Le logiciel n'est pas en cours d'exécution
  
  FindWindowFind = 0
  FindWindowName = Name
  
  EnumChildWindows_(FindWindow_(0, "Program Manager"), @FindWindowSearch(), 0)
  
  ProcedureReturn FindWindowFind
EndProcedure

FindWindow("Agenda")