unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  Logpal=record
    lpal:TLogPalette;
    dummy:Array[1..255]of TPaletteEntry;
  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
  SysPal: LogPal;
  Image: TImage;
  hpal: HPalette;
  DC :HDC;
  TempCanvas: TCanvas;
  TempRect: TRect;
begin
  DC:=GetDc(Form1.Handle);
  SysPal.lPal.PalVersion:=$300;
  SysPal.lpal.palNumEntries :=256;
  GetSystemPaletteEntries(DC,0,256,SysPal.lPal.PalpalEntry);
  hpal:=CreatePalette(SysPal.lpal);
  TempCanvas:=TCanvas.Create;
  TempCanvas.Handle :=dc;
  TempRect:=Rect(0,0,Screen.Width,Screen.Height);
  Image:=TImage.Create(self);
  Image.Height :=Form1.Height;
  Image.Width :=Form1.Width;
  Image.Canvas.CopyRect(TempRect,TempCanvas,TempRect);
  Image.Parent :=form1;
  ReleaseDC(GetDeskTopWindow,DC);
  Image.Picture.Bitmap.Palette :=hpal;
  if SaveDialog1.Execute then
    Image.Picture.SaveToFile(SaveDialog1.FileName+'.bmp');
  Image.show;
  ReleaseDC(GetDeskTopWindow, Dc);
end;end.