Position de la TaskBar Windows

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Position de la TaskBar Windows

Message par GallyHC »

Bonjour,

Une petite routine sans aucune prétention pour connaitre la position de la TaskBar de Windows. Cela peu servir par exemple pour un fenêtre toast ect...

Code : Tout sélectionner

; +======================================================+
; |     ROUTINE DE POSITION DE LA TASKBAR DE WINDOWS     |
; +------------------------------------------------------+
; | COPYRIGHT(C)2007-2008, ALL RIGHT RESERVED KOAKDESIGN |
; +--------------+---------------------------------------+
; | Program type | PUREBASIC 4.51                        |
; +--------------+---------------------------------------+
; | VER & REV    | 0.0.1                                 |
; +--------------+---------------------------------------+
; | Program name | main.pb                               |
; +======================================================+

; +======================================================+
; | Original Version: 0.0.1                              |
; +--------------+---------------------------------------+
; | Created by   | GALLYHOMECORP                         |
; | Graphix by   |                                       |
; +--------------+---------------------------------------+
; | Comments:    |                                       |
; +--------------+                                       |
; |                                                      |
; |                                                      |
; |                                                      |
; +======================================================+

; +======================================================+
; | Système d'Exploitation                               |
; +--------------+---------------------------------------+
; | Window       | Oui                                   |
; | Linux        | Non                                   |
; | MacOS        | Non                                   |
; +======================================================+

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

#ABM_GETSTATE       = 4
#ABM_GETTASKBARPOS  = 5

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Structure lNXY
  width.l
  height.l
EndStructure

Define tepLENData.lNXY
Define tepSVEData.RECT
Define tpeAPPData.APPBARDATA

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

SHAppBarMessage_(#ABM_GETTASKBARPOS, tpeAPPData)
SHAppBarMessage_(#ABM_GETSTATE, tpeAPPData)
tepSVEData\left   = tpeAPPData\rc\Left
tepSVEData\right  = tpeAPPData\rc\Right
tepSVEData\top    = tpeAPPData\rc\Top
tepSVEData\bottom = tpeAPPData\rc\Bottom
tepLENData\width  = tepSVEData\right  - tepSVEData\left
tepLENData\height = tepSVEData\bottom - tepSVEData\top

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

If tepSVEData\left < 1 And tepSVEData\top < 1 And (tepLENData\width > tepLENData\height)
  Debug "TaskBAr en Haut"
EndIf
If tepSVEData\left < 1 And tepSVEData\top > 0 And (tepLENData\width > tepLENData\height)
  Debug "TaskBar en bas"
EndIf
If tepSVEData\left < 1 And tepSVEData\top < 1 And (tepLENData\width < tepLENData\height)
  Debug "TaskBar à Gauche"
EndIf
If tepSVEData\left > 1 And tepSVEData\top < 1 And (tepLENData\width < tepLENData\height)
  Debug "TaskBar à Droite"
EndIf
Cordialement,
GallyHC
Dernière modification par GallyHC le lun. 07/nov./2011 6:05, modifié 1 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Position de la TaskBar Windows

Message par Ar-S »

merci c'est sympa.
Sais tu si on peut connaitre la hauteur de la barre en px ?
La mienne est constituée de 2 barre par exemples, donc elle est un peu plus haut que la normale. Ce serait bien d'avoir une fonction renvoyant sa hauteur.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Position de la TaskBar Windows

Message par GallyHC »

Bonjour Ar-S,

Oui tu avoir la hauteur cela est facile avec un simple calcul comme suit :

Code : Tout sélectionner

Debug "Hauteur : " + Str(tepSVEData\bottom - tepSVEData\top)
Apres tu fait avec left et right si la barre ce trouve a droite ou a gauche. Par contre je ne sais pas comment savoir si il y a une toolbar supplementaire pour le moment :)

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Position de la TaskBar Windows

Message par Ar-S »

Super, ça fonctionne bien dans mon cas : Image

Merci !
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Position de la TaskBar Windows

Message par GallyHC »

Alors tant mieu :) et aussi avec la double barre?
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Position de la TaskBar Windows

Message par Ar-S »

Oui, regarde mon screenshot ci-dessus. J'ai la barre 7 normal et au dessous, la barre de lancement rapide sauce XP que j'ai ajouté en tant que nouvelle barre, mais les 2 "fusionnent".
Je me suis fait du coup une lib GetBarHeight() renvoyant la hauteur ^^
un peu plus light pour mes besoins, j'ai aussi changé le nom des structures pour m'y retrouver ;)

Compilé sous JaPBe avec Taillebite PB 4.51 x86

Code : Tout sélectionner


; +--------------------------------------------------------------------------+
; | Code original de GallyHC modifié par Ar-S                                |
; | renvoi la hauteur en pixel de la barre destâches                         |
; +--------------------------------------------------------------------------+

ProcedureDLL.c GetBarHeight()
  
  #ABM_GETSTATE       = 4
  #ABM_GETTASKBARPOS  = 5
  
  
  Structure lNXY
    width.l
    height.l
  EndStructure
  
  Define Barre.lNXY
  Define Cadre.RECT
  Define BarreData.APPBARDATA
  
  SHAppBarMessage_(#ABM_GETTASKBARPOS, BarreData)
  SHAppBarMessage_(#ABM_GETSTATE, BarreData)
  Cadre\left   = BarreData\rc\left
  Cadre\right  = BarreData\rc\right
  Cadre\top    = BarreData\rc\top
  Cadre\bottom = BarreData\rc\bottom
  Barre\width  = Cadre\right  - Cadre\left
  Barre\height = Cadre\bottom - Cadre\top
  
  
  If Cadre\left < 1 And Cadre\top > 0 And (Barre\width > Barre\height)
    HauteurBarre = Cadre\bottom - Cadre\top
    ProcedureReturn HauteurBarre
  Else
    ProcedureReturn 0
  EndIf
 
EndProcedure

; Example 

; If GetBarHeight() <> 0
  ; Debug  "hauteur  " + Str(GetBarHeight())
; EndIf

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre