cqui789
Messages postés261Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention18 mai 2009
-
10 févr. 2005 à 12:22
cqui789
Messages postés261Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention18 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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
zippro4012
Messages postés216Date d'inscriptionmardi 15 juin 2004StatutMembreDernière intervention26 février 20061 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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
cqui789
Messages postés261Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention18 mai 20093 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cqui789
Messages postés261Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention18 mai 20093 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...)
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
cqui789
Messages postés261Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention18 mai 20093 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