Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Screenshot like Snipping Tool (https://www.delphipraxis.net/211636-screenshot-like-snipping-tool.html)

jaenicke 15. Okt 2022 16:20

AW: Screenshot like Snipping Tool
 
Es gibt auch Gründe für die Nutzung der neuen APIs. Wenn man von hardwarebeschleunigten Fensterinhalten wie Spielen oder Videos Screenshots machen möchte, kommt man mit den herkömmlichen Funktionen nicht weit.

Solange man das nicht braucht, sehe ich allerdings keinen Grund, die bisherigen Funktionen nicht mehr privat zu verwenden. Denn Microsoft empfiehlt zwar schon seit 10 Jahren, diese APIs in neuen Anwendungen nicht mehr zu verwenden, aber sie sind so verbreitet, dass sie so bald nicht einfach entfernt werden.

Für neue Anwendungen im beruflichen Kontext sieht das natürlich anders aus. Da sollte man natürlich eher zukunftssicher planen.

johndoe049 15. Okt 2022 16:21

AW: Screenshot like Snipping Tool
 
Mal so in die Runde gefragt:

Funktioniert da auch wenn SetWindowDisplayAffinity mit WDA_EXCLUDEFROMCAPTURE definiert ist?

himitsu 15. Okt 2022 16:37

AW: Screenshot like Snipping Tool
 
SetWindowDisplayAffinity/WDA_MONITOR/WDA_EXCLUDEFROMCAPTURE gehört zum DesktopWindowManager, also wird es wor allem wohl nur von dessen APIs verwendet/beachtet.

johndoe049 15. Okt 2022 17:07

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von himitsu (Beitrag 1513351)
SetWindowDisplayAffinity/WDA_MONITOR/WDA_EXCLUDEFROMCAPTURE gehört zum DesktopWindowManager, also wird es wor allem wohl nur von dessen APIs verwendet/beachtet.

*** OFFTPIC ***
Gibt es was besseres, um Screenshots, remote, etc. zu blockieren?

Hab da einen Kunden, dessen Datenschutzbeauftragter nicht müde wird neue Anforderungen sich auszudenken.
*** OFFTPIC ***

Andreas13 15. Okt 2022 17:25

AW: Screenshot like Snipping Tool
 
Bitte fair bleiben und KodeZwerg weder beleidigen noch seine selbstlose Hilfsbereitschaft niedermachen!
Wir sollten ihm für sein Engagement vielmehr dankbar sein! :thumb: :angel:
Grüße, Andreas

blawen 15. Okt 2022 17:40

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von Andreas13 (Beitrag 1513354)
Bitte fair bleiben und KodeZwerg weder beleidigen noch seine selbstlose Hilfsbereitschaft niedermachen!
Wir sollten ihm für sein Engagement vielmehr dankbar sein! :thumb: :angel:
Grüße, Andreas

:thumb:

himitsu 15. Okt 2022 17:50

AW: Screenshot like Snipping Tool
 
Zitat:

Gibt es was besseres, um Screenshots, remote, etc. zu blockieren?
Das ist z.B. ein guter Grund, warum irgendwann die alten API blockiert/entfernt werden, wenn sie derartige Sicherheitsmechianismen umgehen.

KodeZwerg 15. Okt 2022 20:49

AW: Screenshot like Snipping Tool
 
Wenn jemand bereit wäre diesen Quelltext nach DWM zu portieren wäre ich sehr dankbar.
Auch Verzeihung das ich vorhin etwas angepi.... war :stupid:
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;

jaenicke 15. Okt 2022 20:56

AW: Screenshot like Snipping Tool
 
Das ist leider nicht ganz so simpel wie die Nutzung der GDI-Funktionen. Es gibt aber auch dafür fertige Quelltexte, die sehr einfach zu verwenden sind:
https://www.codeproject.com/Articles...-API-in-Delphi
Damit du und alle anderen euch nicht dort anmelden müsst, könnt ihr auch dieses Repository nutzen:
https://github.com/tothpaul/Delphi/t...DuplicationAPI

Uwe Raabe 15. Okt 2022 21:59

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von johndoe049 (Beitrag 1513353)
*** OFFTPIC ***
Gibt es was besseres, um Screenshots, remote, etc. zu blockieren?

Hab da einen Kunden, dessen Datenschutzbeauftragter nicht müde wird neue Anforderungen sich auszudenken.
*** OFFTPIC ***

Gib ihm das zu lesen: https://thedailywtf.com/articles/copy-protected


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz