Barre des taches ou est-tu?

Résolu
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 - 10 févr. 2005 à 12:22
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 - 10 févr. 2005 à 18:09
Bonjour,



J'ai pose la question il y a quelques temps mais sans reponse! j'ai essaye de me debrouiller par moi-meme mais je cale!



Je veut savoir la hauteur reelle d'affichage de l'ecran, c'est a dire sans la barre des taches.

celle-ci etant variable en hauteur, je verait bien un parametre du genre taskbar.Height mais je ne le trouve pas.



J'ai essaye de bricoler en metant une fenetre en plein ecran et en
demandant sa hauteur mais ca ne marche pas. la hauteur n'est pas mise a
jour avant la fin de la sub (voir code a la fin)



Ma question est donc

Comment peut-on connaitre la hauteur (et position) de la barre des taches?





Private Sub Form_Load()

WindowState = 2

DoEvents

MsgBox Height & Screen.Height ' height reste a sa valeur initiale

End Sub






Private Sub Form_Click()


MsgBox Height & Screen.Height ' height est mis a jour mais la je n'en ai plus besoin


End Sub

9 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 févr. 2005 à 13:57
Ok, j'avais mal compris ! A ce moment là, il faut utiliser une autre
fonction de l'API Windows : GetSystemMetrics avec la constante
SPI_GETWORKAREA. Voir ma source de feuille magnétique pour avoir un
exemple concret d'utilisation de cette API.

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
3
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
10 févr. 2005 à 14:05
C'est possible d'après moi de connaitre la hauteur de la taskbar. Il faut utiliser les API, de cette facon là :

Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long


Declare Function GetWindowRect Lib "user32" ( _
ByVal hwnd As Long, _
lpRect As RECT) As Long


Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type


Function GetTaskBarHeight() As Long
Dim Handle As Long, ClassName As String, HRect As RECT
ClassName = "shell_traywnd"
Handle = FindWindow(ClassName, "")
GetWindowRect Handle, HRect
GetTaskBarHeight = HRect.Bottom - HRect.Top
End Function
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 févr. 2005 à 12:31
Tu peux récupèrer la taille de l'écran la résolution de l'écran :
utilise pour cela la fonction de l'API Windows EnumDisplaySettings par
exemple (voir mon programme ProgOtoP API Viewer téléchargeable sur
ProgOtoP.com)

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
10 févr. 2005 à 13:53
Merci pour la reponse ultra rapide mais cette fonction rend la taille
totale de l'ecran, ce que je veut, c'est l'ecran moins la barre des
tache, la dimension que prend une fenetre quand elle est maximisee.

Hors, je crois avoir trouve ce qui ne marche pas dans mon bricolage, il
faut remplacer DoEvents par Me.Show, ce n'est pas tres joli donc je
cherche toujours une reponse comme par exemple si on peut et comment
utiliser la fonction
EnumDisplaySettings sur la barre des taches.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
10 févr. 2005 à 16:08
Super, tu m'en dit plus que j'en esperait.

Je vais me faire une getTaskBar() as RECT qui me remvera les dimensions et
la position de la barre des taches, au cas ou un malin la place ailleur
qu'en bas (apres tout on aime windows parceque on est sense pouvoir en
faire ce qu'on veut...)

Merci
0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
10 févr. 2005 à 16:16
Y a tout un tas d'api expliqués en détail ici :

http://docvb.free.fr/api.php

0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 févr. 2005 à 16:16
Avec ma méthode, tu n'as pas besoin de savoir où se place la
barre de tâche : cela te donne le rectangle de la zone active de
l'écran => tu obtiens les coordonnées du rectangle correspondant à
ton bureau sans la barre des tâches.

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 févr. 2005 à 16:18
Il y a aussi ici : www.ProgOtoP.com/popapi/



DocVB n'est plus mis à jour depuis 2 ans maintenant, c'est bien
dommage. C'est pour cette raison que j'ai fait un viewer d'api
concurrent qui est toujours en cours de développement.

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
10 févr. 2005 à 18:09
Oui, DarK Sidious, je n'ai vu ta reponse qu'apres celle de zippro4012.

Et je me suis deconcentre en lisant ta tres interessante source.

Pour ceux qui lirait ce forum et qui n'aurrai pas envie de chercher
dans la sourse de DarK Sidious, voila sa version (qui pourrait
avantageusement rejoindre les expemples d'APIViewer):




'fonction permettant de récupèrer les informations des paramètres systèmes

Public Declare Function SystemParametersInfo_Rect Lib "user32" Alias "SystemParametersInfoA" ( _

ByVal uAction As Long, _

ByVal uParam As Long, _

lpvParam As RECT, _

ByVal fuWinIni As Long) As Long





Public Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type



'constantes pour la fonction SystemParametersInfo_Rect

Public Const SPI_GETWORKAREA = 48 'permet de récupèrer la zone de travail de l'écran



Public RCT_Taille_Ecran As RECT 'stocke la taille de l'écran



'on récupère la taille de la zone de travail de l'écran

' SystemParametersInfo_Rect SPI_GETWORKAREA, vbNull, RCT_Taille_Ecran, 0
0
Rejoignez-nous