タスクバーの位置や大きさを知るにはどうしたらよいのでしょうか? タスクバーの大きさを知るためには、SHAppBarMessage APIを使います。 このAPIでタスクバーの大きさがわかるのですが、このAPIで得られる値はなぜかタスクバーが画面をはみ出していることを示しています。
タスクバーの大きさを知りたい理由が、タスクバー以外の部分の画面の大きさを知るということであれば、SystemParametersInfo APIで知ることができるので、こちらを使うとよいでしょう。
サンプルプログラムのダウンロードは→[Delphi FAQ用サンプル] タスクバーの大きさを知る
implementation
uses
ShellApi;
{$R *.DFM}
procedure TForm1.btnGetTaskBarSizeClick(Sender: TObject);
var
AppBarData: TAPPBARDATA;
rc: TRect;
begin
// タスクバーの大きさ取得 **********************
AppBarData.cbSize := sizeof(TAPPBARDATA);
SHAppBarMessage(ABM_GETTASKBARPOS, AppBarData);
// 取得した情報をMemoコンポに表示
with Memo1, AppBarData do
begin
Clear;
Lines.Add('タスクバーの大きさ');
Lines.Add(Format('Left : %4d', [rc.Left]));
Lines.Add(Format('Right : %4d', [rc.Right]));
Lines.Add(Format('Top : %4d', [rc.Top]));
Lines.Add(Format('Bottom : %4d', [rc.Bottom]));
end;
// タスクバー以外のスクリーンの大きさ取得 *****
SystemParametersInfo(SPI_GETWORKAREA, 0, @rc, 0);
// 取得した情報をMemoコンポに表示
with Memo1 do
begin
Lines.Add('タスクバー以外の部分の大きさ');
Lines.Add(Format('Left : %4d', [rc.Left]));
Lines.Add(Format('Right : %4d', [rc.Right]));
Lines.Add(Format('Top : %4d', [rc.Top]));
Lines.Add(Format('Bottom : %4d', [rc.Bottom]));
end;
end;
end.
コメント (0件)