Lass doch mal das Canvas-Objekt weg. Das brauchst du doch gar nicht. Da dort auch das
Handle verwendet wird, könnte ich mi gut vorstellen, dass dort auch (irgendwo) der Fehler liegt.
Delphi-Quellcode:
var TempDC: THandle;
...
TempDC := GetWindowDC(0);
try
BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Screen.DesktopWidth), Pred(
Screen.DesktopHeight), TempDC, Screen.DesktopLeft,
Screen.DesktopTop, SRCCOPY); //Screenshot machen
finally
ReleaseDC(TempDC);
end;
...
Ach ja, und du brauchst im "finally"-Abschnitt nicht alle lokalen Variablen wieder auf 0 zu setzen. Freigeben lokal erzeugter Objekte (hier die Bitmap) reicht.