procedure TForm2.FormCreate(Sender: TObject);
var
iResult: integer;
begin
// Größe der ganzen Struktur
fAppBarData.cbSize := SizeOf(TAppBarData);
//
Handle des Formulares, das als AppBar dienen soll
fAppBarData.hWnd := Self.Handle;
// Callback-Message
fAppBarData.uCallbackMessage := WM_APPBARMSG;
// Wo soll die AppBar sein?
fAppBarData.uEdge := ABE_RIGHT;
{Alternative Werte: ABE_BOTTOM, ABE_LEFT, ABE_RIGHT}
// Rect für den reservierten Platz, wo keine Anwendung "hin darf"
fAppBarData.rc.Left := Screen.Width - Self.Width;
fAppBarData.rc.Right := Screen.Width;
fAppBarData.rc.Top := 0;
fAppBarData.rc.Bottom := Screen.Height;
// AppBar erstellen
iResult := SHAppBarMessage(ABM_NEW, fAppBarData);
// Hat das Erzeugen geklappt?
if iResult = 0 then
begin
ShowMessage('Die AppBar konnte nicht erzeugt werden. Unter Umständen existiert bereits eine AppBar an dieser Position.');
Exit;
end;
// Position abfragen und nochmal setzen
SHAppBarMessage(ABM_QUERYPOS, fAppBarData);
SHAppBarMessage(ABM_SETPOS, fAppBarData);
// Nachrichtenschleife abarbeiten
Application.ProcessMessages;
// Bringt das Fenster an die gewünschte Position. Dazu werden die vorher festgelegten Werte verwendet.
MoveWindow(fAppBarData.hWnd, fAppBarData.rc.Left, fAppBarData.Rc.Top, Self.Width, fAppBarData.rc.Bottom - fAppBarData.rc.Top, true);
end;