タスクバーの位置や大きさを知るにはどうしたらよいのでしょうか? タスクバーの大きさを知るためには、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件)