Da fällt mir auf Anhieb diese kleine Taste ein - DRUCK, PRINT oder wie die noch so heißt.
Dadurch wird eine Kopie des Bildschirms in die Zwischenablage gelegt.
Diese kann man mit LoadFromClipboardFormat ins Image holen.
Dann muss das Bild nur noch an Hand der Fensterposition und -grösse beschitten werden.
Delphi-Quellcode:
Uses ClipBrd;
Procedure TForm1.Button1Click(Sender: TObject);
Var BitMap : TBitMap;
RahmenbreiteX, RahmenbreiteY: Integer;
Begin
BitMap := TBitMap.Create;
Try
BitMap.LoadFromClipBoardFormat(cf_BitMap,
ClipBoard.GetAsHandle(cf_Bitmap), 0);
Image1.Picture.BitMap.Width := Breite des Ausschnitts;
Image1.Picture.BitMap.Height := Höhe des Ausschnitts;
Image1.Picture.BitMap.Canvas.Draw(Form1.Left + RahmenbreiteLinks,
Form1.Top + RahmenbreiteOben, BitMap);
Finally
BitMap.Free;
End;
End;
Es gibt dann noch die Möglichkeit die Windowsbotschaften abzuhören oder mit einem Timer zu prüfen, ob sich die Zwischenablage geändert hat. Wenn ein BitMap mit der Grösse und Farbauflösung des Monitors im Zwischenspeicher ist, ist die Chance groß, das es ein Screenshot ist.