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