Page 1 sur 1

[Windows] Barre des tâches

Publié : mer. 19/juin/2013 15:20
par Mesa
Pour trouver le handle de la barre des tâches, on utilise la fonction FindWindow_ avec comme nom de classe 'Shell_TrayWnd'.

Code : Tout sélectionner

Tray = FindWindow_("Shell_TrayWnd", 0);

De plus, la barre des tâches possède 3 enfants :

"Button"(le bouton Démarrer)
"ReBarWindow32" (la partie centrale)
"TrayNotifyWnd" (la partie de droite, avec l'heure).

Pour obtenir ces handles, on se sert de la fonction GetWindow_ avec GW_CHILD.

Code : Tout sélectionner

Global *Buffer
*Buffer = AllocateMemory(128)

; Handle de la Barre des tâches
Tray = FindWindow_("Shell_TrayWnd",0)
; cacher Barre des tâches
; ShowWindow_(Tray, #SW_NORMAL)        ; #SW_HIDE

;Mais elle contient 3 enfants (Child)
;     Button(le bouton Démarrer)
;     ReBarWindow32 (la partie centrale)
;     TrayNotifyWnd (la partie de droite, avec l'heure).

Child = GetWindow_(Tray, #GW_CHILD);
While Child <> 0 
  If GetClassName_(Child, *Buffer, 128) > 0  
    Enfant.s=PeekS(*Buffer, 128)
    Debug  Enfant; Nom des 3 enfants
    
    If Enfant = "Button"
      Debug "Agir sur le bouton Démarrer"
      ;Cacher le bouton Démarrer
      ;ShowWindow_(Child, #SW_HIDE);#SW_NORMAL
      
      ;Fermer le bouton Démarrer
      ;SendMessage_(Child,#WM_CLOSE,0,0) ;Pour le revoir, il faut exécuter le fichier "Explorer.exe"
      
      ;Agrandirle bouton Démarrer
      ;SendMessage_(Child,#SW_MAXIMIZE,0,0) ; SW_NORMAL
      
      ;Petite barre flotante dans la barre des tâches. En double cliquant dessus, elle se retransforme en bouton.
      ;SendMessage_(Child,#SW_MINIMIZE,0,0) ; SW_NORMAL
      ;Pour afficher un texte dans cette petite barre
      ;SetWindowText_(Child,"Hello !");
      ;SendMessage_(Child,#SW_MINIMIZE,0,0)
      
      ;déplacer bouton Démarrer
      ;x=75
      ;y=0
      ;w=75
      ;h=19
      ;redraw=#True
      ;MoveWindow_(Child,x,y,w,h,redraw)
      
    ElseIf Enfant = "TrayNotifyWnd"
      Debug "Agir sur la partie centrale"
      
    ElseIf Enfant = "ReBarWindow32"
      Debug "Agir sur la partie droite"
      
    EndIf
  EndIf
  Child = GetWindow_(Child, #GW_HWNDNEXT);
Wend

;Pour d'autres fonctions, voir la fonction "SHAppBarMessage_"
Mesa.

Re: [Windows] Barre des tâches

Publié : mer. 19/juin/2013 15:38
par graph100
Sur Win8 la fonction trouve bien chaque fenêtre enfant, mais aucune des actions sur le button ne fonctionne.