透過建立全螢幕無框線、永遠置頂的表單覆蓋原始桌面,並自行繪製背景、模擬工作列/開始功能表,達到「完全控制桌面」效果。常見於資訊看板、公開查詢終端機、考勤系統等專用場景。
| 表單 | 關鍵屬性 | 值 |
|---|---|---|
| Form1 (主桌面) | BorderStyle | bsNone |
| FormStyle | fsStayOnTop | |
| WindowState | wsMaximized | |
| Form2 (工作列/開始功能表) | BorderStyle | bsNone |
| FormStyle | fsStayOnTop |
TImage (Image1),Align = alClient、Stretch = True,載入自訂壁紙。OnMouseMove 指向 Form1 的 OnMouseMove,確保滑鼠移動事件不被遮擋。
procedure TForm1.FormCreate(Sender: TObject);
var
Tep: Integer;
begin
Tep := 0;
// 停用快速工作切換
SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @Tep, 0);
// 模擬螢幕保護程式執行中,阻擋 Ctrl+Alt+Del 等
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, 1, @Tep, 0);
end;
警告:此手法屬「駭客技巧」,現代 Windows (Vista+) 已大幅限制,可能導致系統不穩定,僅供教學參考。
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
// 滑鼠移至底部 30 像素區域顯示工作列
if Y > Form1.Height - 30 then begin
Form2.Left := Form1.Left;
Form2.Top := Form1.Height - 30;
Form2.Width := Form1.Width;
Form2.Height := 30;
Form2.Show;
end else
Form2.Hide;
end;
procedure TForm2.SpeedButton1Click(Sender: TObject);
begin
PopupMenu1.Popup(Form2.Left, Form2.Top + Form2.Height); // 彈出在工作列上方
end;
procedure TForm2.MenuItemExitClick(Sender: TObject);
begin
Application.Terminate;
end;
SystemParametersInfo 操作全域系統行為,影響範圍廣,需謹慎。此範例展示 Delphi 操作底層視窗與系統參數的能力,適合特定專用裝置開發。實際部署請評估相容性與安全性,優先考慮官方 Kiosk 解決方案。