Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Drucktaste abfangen und verhindern (https://www.delphipraxis.net/70018-drucktaste-abfangen-und-verhindern.html)

Karstadt 23. Mai 2006 15:38


Drucktaste abfangen und verhindern
 
Hallo. Ich möchte verhindern / erschweren das jemand scren shot von meine anwendung macht.

so gehe ich vor:

Delphi-Quellcode:
 
  //TIMER
 
  IF Form1.Active Then
  begin
   xyz.BringToFront;
   Clipboard.Clear; //<--- ;) kein text, kein bild..
  end
  else abz.BringToFront;
Jetzt muss ich noch die DRUCKTASTE abfangen und blocken. Wie geht das?

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:

Waldteufel 23. Mai 2006 16:23

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:

Olli 23. Mai 2006 16:59

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 mein Tutorial).

User1234 23. Mai 2006 17:36

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:
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;
...
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)

[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]

Int3rrupt 23. Mai 2006 19:58

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

jim_raynor 23. Mai 2006 20:24

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: http://www.delphipraxis.net/internal...hot+verhindern

Karstadt 24. Mai 2006 07:11

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:
  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.
...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 ;)

[edit=sakura] [delphi]Tags Mfg, sakura[/edit]

mquadrat 24. Mai 2006 09:04

Re: Drucktaste abfangen und verhindern
 
Zitat:

Zitat von Karstadt
Hallo. Ich möchte verhindern / erschweren das jemand scren shot von meine anwendung macht.

so gehe ich vor:

Delphi-Quellcode:
    //TIMER
  IF Form1.Active Then
  begin
   xyz.BringToFront;
   Clipboard.Clear; //<--- ;) kein text, kein bild..
  end
  else abz.BringToFront;

Hat jetzt gar nichts mit dem eigentlichen Problem zu tun, aber ich als Anwender würde dich dafür kreuzigen, mir Telefonnummern oder eMail Adressen, die ich ins Clipboard gelegt hab einfach zu löschen :D

User1234 24. Mai 2006 11:49

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:
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;
...
Es geht wirklich nicht so einfach, wie du es gerne hättest.

Olli 24. Mai 2006 12:01

Re: Drucktaste abfangen und verhindern
 
Zitat:

Zitat von User1234
(und es geht NICHT anders (ausser mit Code-Injektion, ...))

Wie meinst du das denn?


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.
Seite 1 von 2  1 2      

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