![]() |
AW: Screenshot like Snipping Tool
Zitat:
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 :? |
AW: Screenshot like Snipping Tool
Zitat:
Der Satz ist der beste: Zitat:
|
AW: Screenshot like Snipping Tool
Zitat:
Da ist doch ein Beispiel dabei, in dem das ganze komplett gekapselt verwendet wird. |
AW: Screenshot like Snipping Tool
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zurzeit habe ich noch ![]() (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:
// edit
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; 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)) |
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. |
AW: Screenshot like Snipping Tool
Zitat:
|
AW: Screenshot like Snipping Tool
Zitat:
|
AW: Screenshot like Snipping Tool
Zitat:
|
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. |
AW: Screenshot like Snipping Tool
Zitat:
Zitat:
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 07:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz