![]() |
Drucktaste abfangen und verhindern
Hallo. Ich möchte verhindern / erschweren das jemand scren shot von meine anwendung macht.
so gehe ich vor:
Delphi-Quellcode:
Jetzt muss ich noch die DRUCKTASTE abfangen und blocken. Wie geht das?//TIMER IF Form1.Active Then begin xyz.BringToFront; Clipboard.Clear; //<--- ;) kein text, kein bild.. end else abz.BringToFront; Problem ist das eine Anwendung names HARDCOPY über die Taste DRUCK einen screenshot anfertigt und ausdruckt.... und ich kann das nicht verhindern :stupid: Eine Lösung... PS: mir ist bekannt das das unmöglich ist (verhinderung eines Screenshot´s) aber ich möchte das erschweren... :bouncing4: |
Re: Drucktaste abfangen und verhindern
Hi Karstadt.
Geht's dir jetzt mehr um den Lerneffekt, oder hast du eine bestimmte Anwendung, die wirklich so schützenswert ist? Im ersteren Fall: Vergiss es. Es geht nicht ohne diesen hübschen Palladium-Chip, der alle Datenleitungen überwacht, damit auch jaaaaa nix geschütztes ausgedruckt wird. Im zweiteren Fall: Vergiss es. Es geht nicht ohne diesen hübschen Palladium-Chip, der alle Datenleitungen überwacht, damit auch jaaaaa nix geschütztes ausgedruckt wird. edit> PS: Ich kann mir auch momentan kein Szenario vorstellen, wo man keine Screenshots machen darf... :gruebel: |
Re: Drucktaste abfangen und verhindern
Du darfst dich fragen, warum die Taste "Druck" meistens noch mit "S-Abf" bedruckt ist.
Ich würde dich hassen, wenn du auf meinem Rechner diese Taste sperren würdest (ginge über Hooks - siehe ![]() |
Re: Drucktaste abfangen und verhindern
Edit:
Argh, Sorry, habe nicht gesehen, dass schon jemand geantwortet hat, Entschuldigung Edit end Ist das denn überhaupt schwer? Wenn ich dich wäre, würde ich einen globalen Keyboard-Hook schreiben, der die PrintScrn-Taste abfängt. Dafür müsstest du natürlich wissen, wie man eine dll schreibt (globale hooks nützen nur wirklich etwas, wenn sie in einer dll ausgelagert sind). also irgendwie so:
Delphi-Quellcode:
Dürfte also nicht so schwer sein (p.s. Habe in letzter Zeit nur noch in C++ programmiert, daher ist mein Delphi vielleicht nicht mehr so gut bezüglich dem Aufbar der Strache)
DLL InterceptSCRNPrint
... function Function_That_Intercepts_KeyBoard_Actions(nCode: int, lParam: LPARAM, wParam: WPARAM): LRESULT stdcall begin //Procedur um Tasten auszuwerten, die sich in lParam bzw. wParan befinden end; function StartHook; begin SetWindowsHookEx(WH_KEYBOARD, @Function_That_Intercepts_KeyBoard_Actions, 0, 1); end; ... [edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit] |
Re: Drucktaste abfangen und verhindern
Nur ein Gedanke:
Man könnte doch theoretisch alle Windows Messages abfangen. Windows muss doch eine Message im Hintergrund aufrufen, wenn ein Screenshot erstellt wird! D.h. es wäre auch egal welche Taste gedrückt wurde. Es ist aber nur ein Gedanke(welcher mir gerade spontan eingefallen ist), ob es in der Praxis genauso ist? Zumindest, wenn das so funktionieren würde, dann könnte man den Zugriff für einfache User erschweren. Grüße |
Re: Drucktaste abfangen und verhindern
Ach und wie willst du verhindern, dass jemand sein eigenes Hardcopy-Programm nutzt? Davon gibts nämlich auch ne menge. Und ich glaube es gab zu dem Thema hier schon mal einen Thread und auch dort hieß die Lösung. Ein Schutz vor einer Bildschirmkopie ist sogut wie unmöglich ...
siehe zum Beispiel hier: ![]() |
Re: Drucktaste abfangen und verhindern
moin. Ich will die Taste nur dann unterdrücken wenn meine Anwendung aktiv ist... das ist doch klar ;)
Delphi-Quellcode:
...es muss nur "schwer" sein ein Screenshot anzufertigen! Wenn jemand die Dig Kamera nimmt und ein Foto macht in Macro modus dann kann das gar keiner Anwendung abfanen ;)
IF Form1.Active Then
begin xyz.BringToFront; Clipboard.Clear; //<--- ;) kein text, kein bild.. //Drucktate = nil oder so end else abz.BringToFront; //arbeite normal weiter, aber ersetze die anzeige durch eine Panel. [edit=sakura] [delphi]Tags Mfg, sakura[/edit] |
Re: Drucktaste abfangen und verhindern
Zitat:
|
Re: Drucktaste abfangen und verhindern
@Karstadt:
Lies doch bitte einmal, was wir dir geschrieben haben!!!!!!!!!!!! Wir haben dir die Lösung schon präsentiert, via hooks (und es geht NICHT anders (ausser mit Code-Injektion, ...)). Und via System-Snapshot-Funktionen kannst du dann überprüfen ob deine Anwendung läuft. Also, in der DLL musst du dann irgendwie so eine Prozedur haben:
Delphi-Quellcode:
Es geht wirklich nicht so einfach, wie du es gerne hättest.
DLL Hook
function HookKey(nCode: int, ...): ... begin ... if MessageInWParam = PrintSCRN then begin ... // mit Snapshot Prozesse überprüfen ==> boolean ProgramAktiv if ProgramAktiv = true then begin RESULT 1; (==> Nachricht wird nicht ans System übergeben end else begin RESULT 0; (==> Nachricht wird weiter verarbeitet) end; end; end; function SetHook begin //Hook setzen mit SetWindowsHookEx end; ... |
Re: Drucktaste abfangen und verhindern
Zitat:
Tja, das Lesen der Tips ist nicht nur hier in diesem Thema ein Problem, wie mir scheint ... :roll: :| |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:20 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