Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

Youuuu 14. Okt 2022 15:26

Delphi-Version: 5

Screenshot like Snipping Tool
 
Hi,

würde gerne eine Art "Snipping Tool" in meinem Programm integrieren.

Gibt es hierfür bereits einen Code oder Ideen das umzusetzen?


Ich hatte erst an eine transparente Form gedacht, das funktioniert alleridngs leider nicht, sobald ich die Form auf Transparent setze, kann ich diese nicht mehr anklicken "man kickt durch".

jaenicke 14. Okt 2022 15:47

AW: Screenshot like Snipping Tool
 
Warum machst du es denn nicht einfach wie das Snipping Tool?

Screenshot vom Bildschirm machen, dann auf einem maximierten Fenster ohne Rand anzeigen und den Bereich auswählen lassen.

Oder meinst du den Fenstermodus?

KodeZwerg 14. Okt 2022 16:20

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von Youuuu (Beitrag 1513312)
Hi,

würde gerne eine Art "Snipping Tool" in meinem Programm integrieren.

Gibt es hierfür bereits einen Code oder Ideen das umzusetzen?


Ich hatte erst an eine transparente Form gedacht, das funktioniert alleridngs leider nicht, sobald ich die Form auf Transparent setze, kann ich diese nicht mehr anklicken "man kickt durch".

Du meinst sowas wie ein Rechteck zeichnen um eine Fläche für ein Photo auszuwählen? (Falls ja, dies bau ich gerade in meine ScreenShot Klasse ein...)

Youuuu 14. Okt 2022 17:31

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von KodeZwerg (Beitrag 1513314)
Zitat:

Zitat von Youuuu (Beitrag 1513312)
Hi,

würde gerne eine Art "Snipping Tool" in meinem Programm integrieren.

Gibt es hierfür bereits einen Code oder Ideen das umzusetzen?


Ich hatte erst an eine transparente Form gedacht, das funktioniert alleridngs leider nicht, sobald ich die Form auf Transparent setze, kann ich diese nicht mehr anklicken "man kickt durch".

Du meinst sowas wie ein Rechteck zeichnen um eine Fläche für ein Photo auszuwählen? (Falls ja, dies bau ich gerade in meine ScreenShot Klasse ein...)


Richtig ;)

KodeZwerg 14. Okt 2022 23:06

AW: Screenshot like Snipping Tool
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang ist ein Formular mit Unit, beides in dein Projekt-Ordner kopieren und "uCapture" in den "Uses" aufnehmen.

Dann sowas in der Art...
Delphi-Quellcode:
procedure Foobar;
var
  Capture: TfrmCapture;
begin
  Capture := TfrmCapture.Create(nil);
  try
    Capture.ShowModal;
    Image1.Picture.Bitmap.Assign(Capture.Image);
  finally
    Capture.Free;
  end;
Da ist leider ein Flickern drinn was ich nicht abschalten kann da ich irgendwo was falsch mache :-D

Youuuu 15. Okt 2022 00:40

AW: Screenshot like Snipping Tool
 
Das flackern habe ich nicht, allerdings öfters den Fehler "Fehler bei Bereichsprüfung"

Der Fehler tritt laut Debugger hier auf

Delphi-Quellcode:
ScreenDC := GetDC(0);
In FormMouseMove


Edit: es wird auch nicht genau der Bereich gecaptcherd den ich markiere, das scheint etwas verschoben zu sein, hast das bei dir auch?

Youuuu 15. Okt 2022 00:54

AW: Screenshot like Snipping Tool
 
Liste der Anhänge anzeigen (Anzahl: 1)
Schau mal, hab zwei Videos beigefügt, einmal mit dem Fehler und einmal mit dem verschobenen Screen catch.

Meine Auflösung ist: 3840 * 1600, als Info

KodeZwerg 15. Okt 2022 01:03

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von Youuuu (Beitrag 1513322)
Das flackern habe ich nicht, allerdings öfters den Fehler "Fehler bei Bereichsprüfung"

Der Fehler tritt laut Debugger hier auf

Delphi-Quellcode:
ScreenDC := GetDC(0);
In FormMouseMove


Edit: es wird auch nicht genau der Bereich gecaptcherd den ich markiere, das scheint etwas verschoben zu sein, hast das bei dir auch?

Bitte mal ändern und testen, hatte den falschen Type definiert :oops:
Delphi-Quellcode:
var
  ScreenDC: HDC;
//edit
Ps: Nein, bei mir macht es was es soll, aber der Rahmen flackert wild solange man die Maus drückt.
PPs: Wenn Du mit der mittleren Maus einen Rahmen ziehst, werden alle Farben invertiert :)

himitsu 15. Okt 2022 01:13

AW: Screenshot like Snipping Tool
 
Das ist der Spaß, einer neuen Defaulteinstellung neuer Projekte ... die Bereichsprüfung ist jetzt immer aktiv.

Früher konnte man Signed- und Unsigned-Integer gegenseitig zuweisen, ohne dass es knallt ... es war einmal :stupid:

Blöd, dass Delphi teilweise selber fehlerhafte Typen hat, wo nun Konstanten und Typen nicht mehr zusammen passen. :wall:
z.B. NTSTATUS ist signed, alle Konstenten bis 31 Bit sind signed undefiniert, aber Konstanten größer 31 Bit sind explizit unsigned, also STATUS_SUCCESS vs. STATUS_INVALID_HANDLE

https://quality.embarcadero.com/browse/RSP-16751 :stupid:

KodeZwerg 15. Okt 2022 02:20

AW: Screenshot like Snipping Tool
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mir Deine Videos angeschaut und zeige nun meins um zu zeigen das es wirklich das macht was es sollte...
(Bei mir ist mittlerweile auch das flackern wieder verschwunden da ich den Rahmen nicht mehr male)
Warum die Auswahl nicht das "knipst" was es soll da hab ich keinen Ratschlag... vielleicht liegt es an deiner Monitor Skalierung, bei mir ist es auf 100% gestellt.

TurboMagic 15. Okt 2022 09:22

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von KodeZwerg (Beitrag 1513321)
Im Anhang ist ein Formular mit Unit, beides in dein Projekt-Ordner kopieren und "uCapture" in den "Uses" aufnehmen.

Dann sowas in der Art...
Delphi-Quellcode:
procedure Foobar;
var
  Capture: TfrmCapture;
begin
  Capture := TfrmCapture.Create(nil);
  try
    Capture.ShowModal;
    Image1.Picture.Bitmap.Assign(Capture.Image);
  finally
    Capture.Free;
  end;
Da ist leider ein Flickern drinn was ich nicht abschalten kann da ich irgendwo was falsch mache :-D

Nett, gibt's Pläne das zu veröffentlichen?

TurboMagic 15. Okt 2022 09:23

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von himitsu (Beitrag 1513325)
Das ist der Spaß, einer neuen Defaulteinstellung neuer Projekte ... die Bereichsprüfung ist jetzt immer aktiv.

Früher konnte man Signed- und Unsigned-Integer gegenseitig zuweisen, ohne dass es knallt ... es war einmal :stupid:

Blöd, dass Delphi teilweise selber fehlerhafte Typen hat, wo nun Konstanten und Typen nicht mehr zusammen passen. :wall:
z.B. NTSTATUS ist signed, alle Konstenten bis 31 Bit sind signed undefiniert, aber Konstanten größer 31 Bit sind explizit unsigned, also STATUS_SUCCESS vs. STATUS_INVALID_HANDLE

https://quality.embarcadero.com/browse/RSP-16751 :stupid:

Tja, jetzt müssen wir halt dran bleiben/drängeln etc. dass EMBT diese Probleme zumindest schrittweise beseitigt.
Du scheinst damit ja schon begonnen zu haben, wenn auch noch etwas viele Update Mails auslösend ;-)

venice2 15. Okt 2022 09:55

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von TurboMagic (Beitrag 1513328)
Zitat:

Zitat von KodeZwerg (Beitrag 1513321)
Im Anhang ist ein Formular mit Unit, beides in dein Projekt-Ordner kopieren und "uCapture" in den "Uses" aufnehmen.

Dann sowas in der Art...
Delphi-Quellcode:
procedure Foobar;
var
  Capture: TfrmCapture;
begin
  Capture := TfrmCapture.Create(nil);
  try
    Capture.ShowModal;
    Image1.Picture.Bitmap.Assign(Capture.Image);
  finally
    Capture.Free;
  end;
Da ist leider ein Flickern drinn was ich nicht abschalten kann da ich irgendwo was falsch mache :-D

Nett, gibt's Pläne das zu veröffentlichen?

Was ist da Nett?

Solche Dinger mit alten API's weiter zu pflegen (Copy\Paste woher die sourcen auch stammen) bzw. gibt es diese wie Sand am Meer versuchen neu zu kreieren ist vertane zeit und Müh.
Beschäftige dich mal mit neueren API's bzw. Aktuellen. Siehe DWM!
Meine persönliche Meinung.

TurboMagic 15. Okt 2022 11:01

AW: Screenshot like Snipping Tool
 
DPWM kannte ich noch nicht. Wäre aber evtl. auch ein Hinweis an den OP...

KodeZwerg 15. Okt 2022 11:46

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von venice2 (Beitrag 1513333)
Solche Dinger mit alten API's weiter zu pflegen (Copy\Paste woher die sourcen auch stammen) bzw. gibt es diese wie Sand am Meer versuchen neu zu kreieren ist vertane zeit und Müh.
Beschäftige dich mal mit neueren API's bzw. Aktuellen. Siehe DWM!
Meine persönliche Meinung.

Oh Verzeihung, mir war nicht bewusst das TCanvas/TBitmap veraltete Technik sei. Oder meinst Du ein Formular an sich?
Mal sehen ob ich was über DWM und erstellen eines Formulars/knipsen eines Rechtecks herausfinden kann.

Zitat:

Zitat von TurboMagic (Beitrag 1513328)
Nett, gibt's Pläne das zu veröffentlichen?

Sagen wir es mal so, da ich bereits weiß das mein Quelltext viele Fehler enthält und von mir nur auf meinem Equipment getestet werden kann, bin ich etwas scheu.
Gerne teile ich den Quelltext mit Euch.
Momentan ist es eine sogut wie vollkommen autonome Klasse die kaum Zuwendung zum funktionieren benötigt.
3 Verschiedene Modis per Hotkey sind bereitgestellt, knips alles, knips fokusiertes Fenster, knips mit einer Auswahl (die ich hier gezeigt habe)

Bei Interesse mach ich einen neuen Thread damit auf.

Youuuu 15. Okt 2022 13:18

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von KodeZwerg (Beitrag 1513326)
Ich habe mir Deine Videos angeschaut und zeige nun meins um zu zeigen das es wirklich das macht was es sollte...
(Bei mir ist mittlerweile auch das flackern wieder verschwunden da ich den Rahmen nicht mehr male)
Warum die Auswahl nicht das "knipst" was es soll da hab ich keinen Ratschlag... vielleicht liegt es an deiner Monitor Skalierung, bei mir ist es auf 100% gestellt.

Nein Skalierung liegt es nicht, aber kann es sein, dass du nur mit einem Monitor getestet hast? Ich habe zwei angeschlossen, ich habe gerade etwas rumprobiert und hab einen Fehler bei den Mauswerten gefunden, ich arbeite das gerade um. Ansonsten läuft es aber :)

KodeZwerg 15. Okt 2022 14:27

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von Youuuu (Beitrag 1513343)
Zitat:

Zitat von KodeZwerg (Beitrag 1513326)
Ich habe mir Deine Videos angeschaut und zeige nun meins um zu zeigen das es wirklich das macht was es sollte...
(Bei mir ist mittlerweile auch das flackern wieder verschwunden da ich den Rahmen nicht mehr male)
Warum die Auswahl nicht das "knipst" was es soll da hab ich keinen Ratschlag... vielleicht liegt es an deiner Monitor Skalierung, bei mir ist es auf 100% gestellt.

Nein Skalierung liegt es nicht, aber kann es sein, dass du nur mit einem Monitor getestet hast? Ich habe zwei angeschlossen, ich habe gerade etwas rumprobiert und hab einen Fehler bei den Mauswerten gefunden, ich arbeite das gerade um. Ansonsten läuft es aber :)

Ja, single monitor hier am start, aber immerhin 50" :lol:

himitsu 15. Okt 2022 15:38

AW: Screenshot like Snipping Tool
 
DWM aka DesktopWindowManager

und, wie gesagt
Desktop Duplication API

venice2 15. Okt 2022 15:48

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von himitsu (Beitrag 1513345)
DWM aka DesktopWindowManager

und, wie gesagt
Desktop Duplication API

Manche Leute verstehen halt nicht was Programmierer Schnittstellen sind.
Was TCanvas und TBitmap damit zu tun haben soll ist schwerlich zu verstehen.

Hätte ja verstanden wenn er auf BitBlt eingegangen wäre. Wie dem auch sei. Bin wieder weg.

KodeZwerg 15. Okt 2022 15:58

AW: Screenshot like Snipping Tool
 
Jo super, ich ruf da nur eine api mit 2 methoden auf, getdc, releasedc. wow. total alt und mist. genau aus solchen gründen scheu ich mich überhaupt noch irgendwas hier reinzustellen, jemand bittet um hilfe, nett wie ich bin mach ich mir die mühe und stelle was zusammen nur um mir dann durchlesen zu müssen was für veraltete technik da verwendet wird ohne das was von anderer seite kommt. da kommt stimmung auf, bin raus.

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

KodeZwerg 15. Okt 2022 22:14

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von jaenicke (Beitrag 1513359)
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

Das ist doch der Link aus meinem Post :lol:
Was ich an dieser Sache nicht verstehe, mir scheint es so als ob DWM ein Control Handle benötigt um darauf in Echtzeit zu Rendern/spiegeln.
Also Grundlegend arbeitet es anders als es bei GDI der Fall ist, auch mit einem DirectX-Bildformat hatte ich noch nichts am Hut aber in dem Beispiel-Quelltext aus meiner Post wird ja auch irgendwie ein TBitmap erwähnt.
Mal sehen ob ich damit was anfangen kann um im Endeffekt GetDC/ReleaseDC zu ersetzen :?

johndoe049 15. Okt 2022 22:17

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1513360)
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

:thumb:

Der Satz ist der beste:
Zitat:

The only other explanation was worse: a software investor was stupid enough to think a desktop application could prevent a digital camera from taking photos.
:-D :cheers:

jaenicke 15. Okt 2022 23:48

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von KodeZwerg (Beitrag 1513361)
Das ist doch der Link aus meinem Post :lol:

Den habe ich glatt übersehen. :oops:

Da ist doch ein Beispiel dabei, in dem das ganze komplett gekapselt verwendet wird.

KodeZwerg 16. Okt 2022 01:44

AW: Screenshot like Snipping Tool
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von jaenicke (Beitrag 1513363)
Zitat:

Zitat von KodeZwerg (Beitrag 1513361)
Das ist doch der Link aus meinem Post :lol:

Den habe ich glatt übersehen. :oops:

Da ist doch ein Beispiel dabei, in dem das ganze komplett gekapselt verwendet wird.

Ja ich verstehe da nicht wie ich damit umgehen muss, dauert ein wenig bis ich mich da eingearbeitet habe.
Zurzeit habe ich noch DirectX9 eingebaut.
(Mir fällt leider kein Beispiel ein um es vernünftig auszuprobieren da bei mir auch die GDI Variante alles vom Desktop abfotographiert hat, auch Filme in einem Player)
Delphi-Quellcode:
procedure TkzScreenShot.ScreenShotDirectX9(const ALeft, ATop, ARight, ABottom: Integer);
var
  BitsPerPixel: Byte;
  pD3D: IDirect3D9;
  pSurface: IDirect3DSurface9;
  g_pD3DDevice: IDirect3DDevice9;
  D3DPP: TD3DPresentParameters;
  ARect: TRect;
  LockedRect: TD3DLockedRect;
  BMP: TBitmap;
  i, p: Integer;
begin
//  MessageBox(0, 'DirectX9', 'DirectX9', MB_OK);
  FRect.Left            := ALeft;
  FRect.Top             := ATop;
  FRect.Right           := ARight;
  FRect.Bottom          := ABottom;
  FImageWidth           := FRect.Right - FRect.Left;
  FImageHeight          := FRect.Bottom - FRect.Top;
  BitsPerPixel          := GetDeviceCaps(Application.MainForm.Canvas.Handle, BITSPIXEL);
  FillChar(d3dpp, SizeOf(d3dpp), 0);
  D3DPP.Windowed        := True;
  D3DPP.Flags           := D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
  D3DPP.SwapEffect      := D3DSWAPEFFECT_DISCARD;
  D3DPP.BackBufferWidth := Screen.Width;
  D3DPP.BackBufferHeight := Screen.Height;
  D3DPP.BackBufferFormat := D3DFMT_X8R8G8B8;
  pD3D                  := Direct3DCreate9(D3D_SDK_VERSION);
  pD3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, GetDesktopWindow,
    D3DCREATE_SOFTWARE_VERTEXPROCESSING, @D3DPP, g_pD3DDevice);
  g_pD3DDevice.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, pSurface, nil);
  g_pD3DDevice.GetFrontBufferData(0, pSurface);
  ARect := FRect;
  pSurface.LockRect(LockedRect, @ARect, D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_NOSYSLOCK or D3DLOCK_READONLY);
  BMP := TBitmap.Create;
  try
    BMP.Width := FImageWidth;
    BMP.Height := FImageHeight;
    case BitsPerPixel of
      8: BMP.PixelFormat := pf8bit;
      16: BMP.PixelFormat := pf16bit;
      24: BMP.PixelFormat := pf24bit;
      32: BMP.PixelFormat := pf32bit;
      else
        BMP.PixelFormat := TPixelFormat.pfDevice;
    end;
    p := Cardinal(LockedRect.pBits);
    for i := 0 to FImageHeight - 1 do
      begin
        CopyMemory(BMP.ScanLine[i], Ptr(p), FImageWidth * BitsPerPixel div 8);
        p := p + LockedRect.Pitch;
      end;
    FImageWork := TBitmap.Create;
    try
      FImageWork.PixelFormat := BMP.PixelFormat;
      FImageWork.Width      := BMP.Width;
      FImageWork.Height     := BMP.Height;
      FCanvas.Handle        := BMP.Canvas.Handle;
      if FInverted then
        begin
          FInverted := False;
          FImageWork.Canvas.CopyMode := cmSrcInvert;
        end
        else
          FImageWork.Canvas.CopyMode := cmSrcCopy;
      FImageWork.Canvas.CopyRect(
          Rect(0, 0, FImageWidth, FImageHeight),
          FCanvas,
          Rect(0, 0, FImageWidth - 1, FImageHeight - 1));
      FImage.ReleaseHandle;
      FImage.Assign(FImageWork);
    finally
      FImage.Dormant;
      FImage.FreeImage;
      FImageWork.Free;
    end;
  finally
    BMP.Free;
    pSurface.UnlockRect;
  end;
end;
// edit
Habe nachträglich mal eine Beispielanwendung zum ausprobieren angehangen, sollte alles selbsterklärend sein, so hoffe ich.
(Virus-Total meldet einen (falsch) fund:
Rising
Trojan.Generic@AI.89 (RDMK:cmRtazrbpxF5IptlRljLk8Ec4amq))

himitsu 16. Okt 2022 05:26

AW: Screenshot like Snipping Tool
 
Eine Webcam mit KI und einer Kalaschnikow.

Wenn jemand Fotoapperat, Handy oder sonstwas rausholt, oder auch nur irgendwie angestengt gut, um sich die Details zu merken,
geht der Bildschirm aus und es klickt das kleine Pistölchen, damit derjenige mitbekommt, das er was Falsches machen wollte.


OK, gegen Alles kann eh nicht abgesichert werden.

Der der eine Wahrheitsliebende hatte es geschafft kistenweise Zeugs nach Hause zu schleppen, was unter den strengsten Sicherheitsbeingungen hätte nichtmal den Raum da verlasen dürfen, sonst wird man gleich ausversehn angerschossen.

Uwe Raabe 16. Okt 2022 08:46

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von himitsu (Beitrag 1513366)
OK, gegen Alles kann eh nicht abgesichert werden.

Der Tenor ist doch eher, dass ein Verhindern eines Screenshots von vornherein schon unsinnig ist. Nur manchmal verlieren einzelne Personen im Eifer ihrer Berufsausübung ein wenig den Bezug zur Realität.

Papaschlumpf73 16. Okt 2022 09:39

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1513367)
Zitat:

Zitat von himitsu (Beitrag 1513366)
OK, gegen Alles kann eh nicht abgesichert werden.

Der Tenor ist doch eher, dass ein Verhindern eines Screenshots von vornherein schon unsinnig ist. Nur manchmal verlieren einzelne Personen im Eifer ihrer Berufsausübung ein wenig den Bezug zur Realität.

Volltreffer! Sie rufen immer öfter nach technischen Vorkehrungen oder kilometerlangen Datenschutzvereinbarungen. Die Sensibilisierung der einzelnen Mitarbeiter für das Thema Datenschutz kommt dann aber oft viel zu kurz.

peterbelow 16. Okt 2022 11:37

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von johndoe049 (Beitrag 1513353)
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 ***

Völlig nutzloses Feature, wo heutzutage doch jeder mit 'nem Smartphone rumläuft und einfach ein Foto des Bildschirms machen kann...

himitsu 16. Okt 2022 13:07

AW: Screenshot like Snipping Tool
 
Es geht auch nicht um den totalen Schutz.

Wenn es danach geht, kannst du deine Haustür auch gleich ausbauen, weil sie ja nutzlos ist und die Bösen dennoch reinkommen können.
Schlösser, Tresore, Polizei ... alles sinnlos ... braucht eh Keiner, weil helfen eh nicht immer.


Aber damit kann man z.B. verhindern, dass "normale" Programmen, welche darauf hören, das machen, was du sagst.
z.B. Screenshot/Screenrecording oder sowas wie RDP/Treamviewer, welche diese API unterstützen, damit nicht ausversehn gewisse Dinge rausgehn.

oder gibt es auf Webseiten eine Datei, welche Webcrawlern sagt, ob man von ihnen verfolgt werden möchte und ob man sich dann auch in den Suchergebnissen gewisser Portale wiederfinden mönnte, bzw. ihnen auch andersrum sagen kann, was sie wie/wo suchen und veröffentlichen sollen.
Natürlich können jene Programme diese Informationen dennoch auch ganz einfach ignorieren, drum fängt man dann wiederrum z.B. mit htaccess an die auf anderem Wege auszusperren, was wiederum umgangen werden kann usw.

johndoe049 16. Okt 2022 13:20

AW: Screenshot like Snipping Tool
 
Zitat:

Zitat von peterbelow (Beitrag 1513369)
Zitat:

Zitat von johndoe049 (Beitrag 1513353)
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 ***

Völlig nutzloses Feature, wo heutzutage doch jeder mit 'nem Smartphone rumläuft und einfach ein Foto des Bildschirms machen kann...

Zitat:

Volltreffer! Sie rufen immer öfter nach technischen Vorkehrungen oder kilometerlangen Datenschutzvereinbarungen. Die Sensibilisierung der einzelnen Mitarbeiter für das Thema Datenschutz kommt dann aber oft viel zu kurz.
*** OFFTPIC ***
Ihr habt beide recht. Sehe ich auch so.

Jedoch will der Datenschutzbeauftragte möglichst wenig Haftungsrisiko haben und verweist darauf, dass die DGSVO "Privacy by Design" verlangt.

Also bekommt der was eingbaut, entsprechende Hinweise und gut ist.
*** OFFTPIC ***


Zurück zum Hauptthema:

RVMedia kann seit einiger Zeit auch Screen Shots erzeugen. Auflösung des Monitors soll unterstützt werden und angeblich auch Multi-Monitor Umgebungen. Habe ich noch nicht ausprobiert. Ich verwende es für den Zugriff auf IP Kameras. Wäre ggf. eine Alternative. Demo gibt es, API Dokumentation ist auf der Webseite, bzw. in der Demo enthalten.

Ist aber nicht kostenfrei. Könnte aber ggf. interessant sein, wenn die Make or Buy Kalkulation für Make zu teuer wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.
Seite 1 von 2  1 2      

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