AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Drucktaste abfangen und verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

Drucktaste abfangen und verhindern

Ein Thema von Karstadt · begonnen am 23. Mai 2006 · letzter Beitrag vom 25. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#1

Drucktaste abfangen und verhindern

  Alt 23. Mai 2006, 16:38
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

Eine Lösung...

PS: mir ist bekannt das das unmöglich ist (verhinderung eines Screenshot´s) aber ich möchte das erschweren...
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#2

Re: Drucktaste abfangen und verhindern

  Alt 23. Mai 2006, 17:23
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...
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#3

Re: Drucktaste abfangen und verhindern

  Alt 23. Mai 2006, 17:59
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).
  Mit Zitat antworten Zitat
User1234

Registriert seit: 7. Jan 2006
5 Beiträge
 
#4

Re: Drucktaste abfangen und verhindern

  Alt 23. Mai 2006, 18:36
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]
  Mit Zitat antworten Zitat
Int3rrupt

Registriert seit: 30. Mär 2004
9 Beiträge
 
#5

Re: Drucktaste abfangen und verhindern

  Alt 23. Mai 2006, 20:58
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
It's not a bug, it's a feature!
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#6

Re: Drucktaste abfangen und verhindern

  Alt 23. Mai 2006, 21:24
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
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#7

Re: Drucktaste abfangen und verhindern

  Alt 24. Mai 2006, 08:11
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]
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Drucktaste abfangen und verhindern

  Alt 24. Mai 2006, 10:04
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
  Mit Zitat antworten Zitat
User1234

Registriert seit: 7. Jan 2006
5 Beiträge
 
#9

Re: Drucktaste abfangen und verhindern

  Alt 24. Mai 2006, 12:49
@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.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: Drucktaste abfangen und verhindern

  Alt 24. Mai 2006, 13:01
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 ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr.
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