[Windows] Barre des tâches

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

[Windows] Barre des tâches

Message 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.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: [Windows] Barre des tâches

Message par graph100 »

Sur Win8 la fonction trouve bien chaque fenêtre enfant, mais aucune des actions sur le button ne fonctionne.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre