Articles

Use this procedure to hide (AVisible=True) or show (AVisible=False) the start button:

procedure TForm1.HideStartButton(AVisible: Boolean);
var
  Tray,Child,StartButtonHandle: HWnd;
  C: array[0..127] of Char;
  S: string;
begin
  Tray:=FindWindow('Shell_TrayWnd',nil);
  Child:=GetWindow(Tray,GW_CHILD);
  while Child<>0 do
  begin
    if GetClassName(Child,C,SizeOf(C))>0 then
    begin
      S:=StrPas(C);
      if UpperCase(S)='BUTTON' then
      begin
        StartButtonHandle:=Child;
        if AVisible then ShowWindow(Child,1)
        else ShowWindow(Child,0);
      end;
    end;
    Child:=GetWindow(Child,GW_HWNDNEXT);
  end;
end;