![]() |
Verhindern aus einem Memo zu kopieren
Hallo!
Gibt es eine Möglichkeit, zu verhindern, dass man den Text aus einem Memo kopieren/ausschneiden kann? Wann ja, wie mache ich das? Gruß, dopeline :dancer: |
Re: Verhindern aus einem Memo zu kopieren
Zitat:
geht gar nicht - also selbst wenn man es per Delphi unterbinden könnte, was ich jetzt direkt nicht weiß, kann ich immer noch ein Screenshot machen und es durch ein Texterkennungsprogramm jagen und habe immer noch die Infos. So mache ich das schon ewig mit geschützten PDF-Dokumenten ;-) Genau der quatsch mit den geschützen Webseiten - lächerlich. Beim IE einfach Ansicht/Quelltext, dann markieren, kopieren und in meinen HTML-Editor laden - Schutz rausnehmen und anzeigen - bäääääähhhh <zunge_rausstreckt> und schon habe ich dem Webseitenersteller ein Bein gestellt :-) |
Also entweder du sperst die rechte Maustaste, die Menütaste und die Tastenkombinationen STRG+C/STRG+X
oder du bastelst dir einfach einen timer und sagts
Code:
Das soll dann alle 5 ms wiederholt werden und fertig.
memo1.selstart:=memo1.selstart+memo1.SelLength;
memo1.sellength:=0; (Wer es schafft den text in 0,005 sec. zu markieren und zu copieren, dem sollte man den Ervolg gönnen.) Ach und wenn man in das Memo nix eingeben können brauch, dann gib es doch einfach über ein Label aus, da kann man garantiert nix rauscopieren, ob man da aber irgendwie einen schönen 3D Ramen rumbekommt weiß ich nicht. (Das hilft auch gegen Tools, die Den Text eines Memo's anhand des Handels auslesen, ich glaub da gabs probleme den handel eines labels zu ermitteln, über dem die Maus ist. |
Re: Verhindern aus einem Memo zu kopieren
Zitat:
Interessant wird der schutz von Bildern, aber das ist ein anderes Kapitel ;) PS: Einen abseluten Schutz gibt es nie, man kann z.b. immer den Speicher auslesen, in dem der Text steht, nur ob man sich diese Mühe machen möchte? |
Zitat:
und das mit dem Texterkennungsprogramm (z.b. omnipage) kann man sowieso immer machen. aber viele leute wissen nicht einmal, dass es sowas gibt, geschweige denn, wie man das benutzt 8) Grüße, dopeline |
Hallo,
das kommt darauf an, was Du mit dem Memo vorhast, dient es zur Dateneingabe, oder soll es nur Text darstellen den Du im Programm erzeugst. Wenn letzteres der Fall ist, kannst Du das Memo einfach auf
Delphi-Quellcode:
stellen, trotzdem funktioniert danach noch immer z.B.
Memo1.Enabled := FALSE;
Delphi-Quellcode:
aber man kann den Text nicht mehr markieren, daher auch nicht mehr
Memo1.Lines.Add('test');
kopieren. Einzig die Darstellung des Memos ändert sich leicht, Style disabled, das könnte man sicher auch leicht ändern, wenn es stört. |
Moin Dopeline,
erstell Dir ein PopUpMenü mit zwei Menüitems, dem einen weist Du den ShortCut für STRG-C, dem anderen den für STRG-X zu. Dem Memo wird jetzt dieses PopUpMenü verpasst, und dann im OnContextPopup des Memos die Zeile Handled := true eingetragen. Fertig. Dadurch, dass Du die Shortcuts in einem zugewiesenen Menü verwendest, ist Dein Programm selber für deren Ausführung verantwortlich, und durch das Handled := true wird dem System mitgeteilt, dass das Programm auch das Contextmenü selber darstellen will (bzw. hat), was natürlich unterbleibt. Das herauskopieren mittels WM_GETTEXT funktioniert dann aber immer noch ;-) |
Also zum deaktivieren der rechten Maustaste würde ich dir einfach raten, abzufragen, wann die Maus gedrückt wird (rechte taste) wenn dann Die Maus über dem Memo ist, dann sende einen linksklick.
Beispiele kannst du unter: Mausklick simulieren: ![]() Maustaste Prüfen: ![]() Cursorposition ermitteln: var a:TPoint; x,y:longint; begin GetCursorPos(a); mausx:=a.x; mausy:=a.y ... end; Das Memo ist im bereich x koordinate: von form1.left+memo1.left bis form1.left+memo1.left+memo1.width Bereich y koordinate dementsprechen mit top und height (nur das nu noch +17 (Tietelleiste) rechnen mußt. Aber wie das mit den Tasten war weiß ich jetzt auch nicht mehr so genau, wenn ich was finde, dann sag ich bescheid! [edit] Also die STRG+C/X kannst du auch deaktivieren, indem du bei memo1.onkeydown einfach "memo1.sellength:=0;" eingibst. (Wenn also c oder x gedrückt wird wird erst die markierungslänge auf 0 gesetzt, dann copiert. Und wenn du das auch in nen timer machst kann man auch mit der Menü-Taste von windows nicht mehr copieren, da das menü eine Darstellungsverzögerung von ich glaube 50ms hat-> timer setzt schneller wieder auf nichts markiert, als das menü aufgeht. [/edit] |
Zitat:
Zitat:
Lies doch einfach mal, was schon für Lösungen gepostet wurden, bevor du ihr so unsinnige Vorschläge machst. |
Vielen Dank! Das mit dem PopupMenu hat funktioniert. als ich versucht habe den text mit strg+c zu kopieren und dann in einem Editor einzufügen ist dabei nur "Handled := true" rausgekommen! :hello:
Kann man es jetzt noch irgentwie einrichten, dass im Editor nicht "Handled := true" steht, sondern ein Text, wie "Das Kopieren ist nicht gestatten. Alle Rechte sind den Entwicklern vorbehalten" auftaucht? Das wär cool. Grüße, dopeline :dancer: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 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