Bonjour,
Je n'arrive plus à mettre la main sur la fonction qui donne la hauteur active de la barre des tâches ...
Merci à celui ou celle qui me guidera à cette fonction.![]()
Bonjour,
Je n'arrive plus à mettre la main sur la fonction qui donne la hauteur active de la barre des tâches ...
Merci à celui ou celle qui me guidera à cette fonction.![]()
Salut
GetSystemMetrics.
[edit]
ou mieux SHAppBarMessage.
Bonjour
Voili voilà... (Testé sous Seven)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 function TaskBarHeight: integer; var hTB: HWND; // taskbar handle TBRect: TRect; // taskbar rectangle begin hTB:= FindWindow('Shell_TrayWnd', ''); if hTB = 0 then Result := 0 else begin GetWindowRect(hTB, TBRect); Result := TBRect.Bottom - TBRect.Top; end; end;
Avec SHAppBarMessage:
Dès fois qu'elle ne soit pas située en bas comme d'habitude.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 var AppBarData: TAppBarData; begin SHAppBarMessage(ABM_GETTASKBARPOS, AppBarData); with AppBarData.rc do ShowMessage(Format('Left: %d, Top: %d, Right: %d, Bottom: %d', [Left, Top, Right, Bottom])); end;
@+
Bonjour,
Autre possibilité : (testé sous D5)
A+.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 function HBarreWindows : integer; // Hauteur barre de tâches Windows var r : TRect; begin SystemParametersInfo(SPI_GETWORKAREA,0,@r,0); result:=screen.height - r.bottom; end; procedure TForm1.FormShow(Sender: TObject); begin label1.caption:='Hauteur de la barre de tâches : '+intToStr(HBarreWindows); end; procedure TForm1.btnAfficherClick(Sender: TObject); begin ShowWindow(FindWindow('Shell_TrayWnd', nil), SW_RESTORE); //Afficher barre des tâches end; procedure TForm1.btnCacherClick(Sender: TObject); begin ShowWindow(FindWindow('Shell_TrayWnd', nil), SW_HIDE); //Cacher barre des tâches end;![]()
Connaître la hauteur de la barre de tâches a peu d'intérêt en soi. Je ne connaît pas l'applicatif, mais J'aurais tendance à dire que le raisonnement est inverse et que c'est en fait la zone utile qui est intéressante et ceci pour plusieurs raisons:
- Il est très facile de créer une AppBar qui réduira d'autant la surface utilisable mais qui ne sera pas prise en compte par les fonctions précitées.
- La Taskbar est sur l'écran principal. En multi-écrans, soustraire systématiquement cette valeur serait une erreur.
Il est très facile de connaître la zone utile par moniteur à travers les propriétés WorkAreaXXX des TMonitor.
Et comme le dit justement Cl@udius, la barre de tâches (ou tout autres AppBar) n'est pas forcément située en bas d'écran![]()
Et ben en voilà des réponses ...
En fait j'ai une application qui, quand elle s'ouvre, chasse momentanément la barre des tâches, qui se réinstalle lorsque l'application se développe.
Mais j'avais un soucis, c'était que cette appli initialement était réalisée pour un écran 1024 x 768.
Depuis j'ai poursuivi sont développement sur des écrans plus grands sans faire plus gaffe. Lorsque je l'ai essayée sur un écran petit format, ben la barre des tâche était recouverte par l'application.
Les écrans inférieurs à 1024 x 768 étaient réajustés pour sont déroulement puis restitués ensuite. Donc là pas de soucis.
En fait j'ai résolu le problème très simplement ... je cherche les dimensions de l'écran et si je trouve 768 en hauteur, je réduis la hauteur de mon application lorsqu'elle se déroule de la hauteur traditionnelle de la barre des tâches.
En tous cas toutes vos solutions me laissent entrevoir d'autres possibilités.
SHAppBarMessage que je ne connaissais pas me plait beaucoup et rejoint la remarque judicieuse de Andnotor.
Merci à tous.
Partager