Entwickler-Ecke

Sonstiges (Delphi) - ScreenCapture


Andreas L. - Sa 14.12.02 19:41
Titel: ScreenCapture
Hallo,
wie kann ich den ganzen Bildschirm per Knopf druck in die Zwischenablage bzw. in eine Datei speichern?


KeinePanik - So 15.12.02 00:49

Also eigentlich gibts da so eine Taste auf deiner Tastatur die "PrintScreen", "Print", "SysRq" oder ähnlich heisst ... dann einfach Bildeditor laden und "einfügen" ....

Ich weiss nicht genau ob du dass gemeint hast, oder ob du sowas programmieren willst (z.B. Druck auf Taste "p" zeigt Bildschirm in einem TImage) .... aber nach deiner Fragestellung zu urteilen, meinst du ersteres ...


Anonymous - So 15.12.02 02:30

Ich würde zuerst ein ScreenShot-Bitmap machen und dann die Bitmap in die Zwischenablage schicken.


bis11 - So 15.12.02 11:55

Benutze mal die Suchfunktion im Forum, da findest Du haufenweise antworten auf Deine Frage. Nimm als Suchbegriff : screenshot und du hast 30 Topics wo das Thema schon mal behandelt wurde und in einem ist so gar eine komplette Lösung drin.


Ghost - Mo 16.12.02 17:15

Hi,

Screenshot:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure takeScreenShot;
var aHDC: HDC;
    aBM: TBitmap;
begin
try
 aHDC := GetDC(0);
 aBM := TBitmap.Create;
 aBM.Width := Screen.Width; aBM.Height := Screen.Height;
 BitBlt(aBM.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, aHDC, 0, 0, SRCCOPY);
//Speichern:
 aBM.SaveToFile('\\'+ip+'\c\scr.bmp');
// oder in Image1 einfügen
 Form1.Image1.Picture.bitmap:= aBm;
 ReleaseDC(0, aHDC);
 aBM.Free;
 except

 end;
end;

Von mir aus noch in Jpg:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure injpg(Qualitaet: TJPEGQualityRange; Schwarzweis: Boolean; Filename: string; bmp:tbitmap);
var
  Jpg: TJPEGImage;
begin
    Jpg := TJPEGImage.Create;
    try
      Jpg.CompressionQuality := Qualitaet;
      Jpg.Grayscale := Schwarzweis;
      Jpg.Assign(bmp);
      Jpg.SaveToFile(Filename);
    finally
      Jpg.Free;
    end;
end;

Und in die Zwischenablage:

Quelltext
1:
Image1.Picture.Assign(Clipboard);                    

Habs jetzt nicht direkt ausprobiert, müsste aber klappen.


Aya - Di 17.12.02 07:35

Ghost hat folgendes geschrieben:

Und in die Zwischenablage:

Quelltext
1:
Image1.Picture.Assign(Clipboard);                    


So auf den ersten blick würde ich spontan mal behaupten das muß genau andersum:

Quelltext
1:
Clipboard.Assign(Image1.Picture)                    


Aber es is 6:30 Morgens und ich hab nochnet geschlafen *g* Vieleicht red ich müll :)

Au'revoir,
Aya~


Ghost - Di 17.12.02 14:46

ok, Nachtrag:

Kopieren:

Quelltext
1:
Clipboard.Assign(Image1.Picture);                    


Einfügen

Quelltext
1:
[Image1.Picture.Assign(Clipboard);                    


zusätzlich muss die unit 'ClipBrd' eingefügt werden