您正在寻找Application Desktop Toolbars,这是Windows 任务栏内部使用的。它涉及创建具有特定样式的窗口,正确设置它,然后使用SHAppBarMessage 与其通信。
它可能会变得相当复杂,但是有一些免费的源代码组件(一个在Torry,或者另一个在DelphiPages)有基本的外壳来帮助你入门。
第二个链接的AppBar.pas 单元中的一个示例(根据链接的文本,它是带有源代码的免费软件 - 我用它来创建一个应用程序启动器任务栏,其中包含带有应用程序图标和描述的按钮从.lnk 文件中读取):
type
TAppBarMessage = (abmNew, abmRemove, abmQueryPos, abmSetPos, abmGetState,
abmGetTaskBarPos, abmActivate, abmGetAutoHideBar,
abmSetAutoHideBar, abmWindowPosChanged);
TAppBarEdge = (abeLeft, abeTop, abeRight, abeBottom, abeUnknown, abeFloat);
...
function TAppBar.AppBarMessage(abMessage: TAppBarMessage;
abEdge: TAppBarEdge; lParam: LPARAM; bRect: Boolean; var rc: TRect): UINT;
var
abd: TAppBarData;
begin
// Initialize an APPBARDATA structure
abd.cbSize := sizeof(abd);
abd.hWnd := Handle;
abd.uCallbackMessage := WM_APPBARNOTIFY;
abd.uEdge := Ord(abEdge);
if bRect then
abd.rc := rc
else
abd.rc := Rect(0, 0, 0, 0);
abd.lParam := lParam;
Result := SHAppBarMessage(Ord(abMessage), abd);
// If the caller passed a rectangle, return the updated rectangle
if bRect then
rc := abd.rc;
end;