Hallo,
ich versuche mit folgendem Quelltext ein Screenshot eines anderen Programmes zu machen. Leider bleibt mein Bild leer. Muss ich das
Handle unbedingt im anderen Prozess erzeugen oder sorgt SendMessage dafür das dieses
Handle im anderen Prozess gültigkeit erlangt (wie es bei wm_copydata dafür sorgt das die Daten im anderen Adressraum gültig sind)?
Delphi-Quellcode:
GetWindowPlacement(lHandle, @lPlacement);
lRect := lPlacement.rcNormalPosition;
lBitmap := TBitmap.Create;
lBitmap.Height := lRect.Bottom - lRect.Top + 1;
lBitmap.Width := lRect.Right - lRect.Left + 1;
SendMessage(lHandle, WM_PRINT, Integer(lBitmap.Canvas.Handle), PRF_ERASEBKGND or PRF_CLIENT or PRF_CHILDREN);
lBitmap.SaveToFile('d:\ab1.bmp');
lBitmap.Free;
[Edit]
Mit der Funktion PrintWindow funktioniert es. Mich würde jedoch trotzdem interessieren warum es so wie ich es versucht hab nicht funktioniert.
[/Edit]