Use FindWindowEx funtion for getting handle of the Start-button and after that, you may use SendMessage function with BM_SETIMAGE parameter.
var MyBitmap: TBitmap; StartBtn: THandle; Old: Integer; ... procedure TForm1.Button1Click(Sender: TObject); begin MyBitmap:=TBitmap.Create; MyBitmap.LoadFromFile('bmp1.bmp'); StartBtn:=FindWindowEx( FindWindow('Shell_TrayWnd',nil), 0, 'Button', nil); Old:=SendMessage( StartBtn, BM_SETIMAGE, 0, MyBitmap.Handle); end; procedure TForm1.FormDestroy(Sender: TObject); begin SendMessage( StartBtn, BM_SETIMAGE, 0, Old); MyBitmap.Free; end;