Arrange icons on the Desktop

Use FindWindow function and use LVM_ARRANGE message. Don't forget to add CommCtrl in the uses capter.

uses CommCtrl;
...
procedure TForm1.Button1Click(Sender: TObject);
var
  Res: THandle;
begin
  Res:=FindWindow('ProgMan', nil);
  Res:=GetWindow(Res, GW_CHILD);
  Res:=GetWindow(Res, GW_CHILD);
  SendMessage(Res, LVM_ARRANGE, LVA_SNAPTOGRID, 0);
end;