Wenn jemand bereit wäre diesen Quelltext nach DWM zu portieren wäre ich sehr dankbar.
Auch Verzeihung das ich vorhin etwas angepi.... war
Ich habe mir das mit DWM
hier angeschaut und werde daraus nicht wirklich schlau.
Ich habe die in meiner zugrunde liegende "Schnappschuss" Methode nun isoliert so das hoffentlich klar sein sollte worum es mir geht, angestaubte Technik zu erneuern.
Wenn meine Vorgehensweise per left, top, right, bottom falsch ist im Umgang mit DWM dann bitte höflichst um Entschuldigung, da spricht dann meine Unwissenheit aus mir.
Delphi-Quellcode:
procedure TkzScreenShot.ScreenShot(const ALeft: Integer; const ATop: Integer; const ARight: Integer; const ABottom: Integer);
var
ShotDC: HDC;
begin
FRect.Left := ALeft;
FRect.Top := ATop;
FRect.Right := ARight;
FRect.Bottom := ABottom;
FImageWidth := FRect.Right - FRect.Left;
FImageHeight := FRect.Bottom - FRect.Top;
ShotDC := GetDCEx(GetDesktopWindow, 0, DCX_WINDOW or DCX_PARENTCLIP or DCX_CLIPSIBLINGS or DCX_CLIPCHILDREN);
try
FImage.ReleaseHandle;
FImage.Width := FImageWidth;
FImage.Height := FImageHeight;
FCanvas.Handle := ShotDC;
if FInverted then
begin
FInverted := False;
FImage.Canvas.CopyMode := cmSrcInvert;
end
else
FImage.Canvas.CopyMode := cmSrcCopy;
FImage.Canvas.CopyRect(
Rect(0, 0, FImageWidth, FImageHeight),
FCanvas,
Rect(FRect.Left,
FRect.Top,
FRect.Right,
FRect.Bottom));
FImage.Dormant;
FImage.FreeImage;
finally
ReleaseDC(GetDesktopWindow, ShotDC);
end;
end;