Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TMemo kopiergeschützt (https://www.delphipraxis.net/144477-tmemo-kopiergeschuetzt.html)

Muchacho 8. Dez 2009 21:33


TMemo kopiergeschützt
 
Hi

In meinem Delphi Programm werden gewisse Daten in einem TMemo Feld gezeigt.

Wie kann ich verhindert, dass diese Daten herauskopiert werden können?

Ich habe probiert mit Eigenschaft ReadOnly = true, aber diese verhindert nur schreiben

in einem Memo Feld.

Mit einer Maustaste kann man dort weiterhin Text markieren und herauskopieren.

Enabled = false kommt auch nicht in Frage, weil die ScrollBars weiter funktionieren müssen


Muchacho

Luckie 8. Dez 2009 21:42

Re: TMemo kopiergeschützt
 
Wo kommt der Text denn her? Und was machst du, wenn du es doch schaffen solltest und jemand macht einen Screenshot? Oder schreibt es einfach ab?

Wenn du den Text wirklich vor Kopieren schützen willst, zeig ihn nicht an.

juergen 8. Dez 2009 21:48

Re: TMemo kopiergeschützt
 
Hallo,

man könnte auch ein eigenes Popup-Menü mit den gewünschten Funktionen hinterlegen, also alles außer kopieren...

himitsu 8. Dez 2009 21:50

Re: TMemo kopiergeschützt
 
Per SendMessage kann man den Inhalt immernoch vom Memo abfragen
oder man kopiert den Text aus dem RAM oder wo er sonst noch gespeichert wurde.

Bernhard Geyer 8. Dez 2009 21:53

Re: TMemo kopiergeschützt
 
Zitat:

Zitat von Luckie
Wo kommt der Text denn her? Und was machst du, wenn du es doch schaffen solltest und jemand macht einen Screenshot? Oder schreibt es einfach ab?

Wenn du den Text wirklich vor Kopieren schützen willst, zeig ihn nicht an.

Full Ack. Wenn der Text so sensibel ist mußt du verhindern das er Angezeigt wird wenn der User nicht berechtigt ist. Sobald er angezeigt wird kannst du ihn mit ca. 1. Mio verschiedener Programm "kopieren". Wenn es sein muß sogar gleich in ein fertiges PDF oder Word-Dokument.

Muchacho 8. Dez 2009 21:59

Re: TMemo kopiergeschützt
 
Hi

Screenshot ist egal.

Es handelt sich hier um umfangreiche verschiedene Listen die mit Mühe zusammen gestellt wurden.

Also die Sensibilität dieser Daten ist egal

Diese Daten sind fest im Programm verankert und betragen jedes mall mehrere hundert Zeilen.

Scheinbar sollte dies kein Problem sein solche Daten zu schützen.

Eigentlich kann man dieses Problem als Verhinderung einer Markierung in TMemo ansehen.


Muchacho

@Bernhard: „Full Ack“ Bernhard ist eine tief überlegte Antwort, danke.

toms 9. Dez 2009 05:53

Re: TMemo kopiergeschützt
 
Hallo

Das Kopieren von Text kannst du durch Abfangen von WM_COPY verhindern.


Delphi-Quellcode:
 private
    FOldMemoProc: TWndMethod;
  protected
    procedure MemoWndProc(var Msg: TMessage);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM} 

procedure TForm1.MemoWndProc(var Msg: TMessage);
begin
  if (Msg.Msg = WM_COPY) then
  begin
    Msg.Result := 1;
    ShowMessage('Kopieren nicht erlaubt ;)');
  end else
    FOldMemoProc(Msg);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOldMemoProc := Memo1.WindowProc;
  Memo1.WindowProc := MemoWndProc;
end;
Wenn auch Msg.Msg auf WM_GETTEXT überprüft wird, kann der Text auch nicht mehr von "außen" ausgelesen werden.
Musst nur überprüfen, ob dies keine anderen "Nebenwirkungen" mit sich bringt.

haentschman 9. Dez 2009 06:06

Re: TMemo kopiergeschützt
 
...oder ganz simpel. Legst du was transparentes drüber, da kann man gar nicht erst markieren.

:hi:

Reinhard Kern 9. Dez 2009 08:56

Re: TMemo kopiergeschützt
 
Zitat:

Zitat von haentschman
...oder ganz simpel. Legst du was transparentes drüber, da kann man gar nicht erst markieren.

:hi:

aber auch nicht mehr mit Tasten navigieren - oder sehe ich das falsch? Es soll ja noch Menschen geben, die Cursortasten und ähnliches Zeug benutzen.

Gruss Reinhard

Muchacho 9. Dez 2009 09:04

Re: TMemo kopiergeschützt
 
@haentschman: geht nicht, weil ich ScrollBars benutzen muss

@toms :hello:

Danke für Deine fachliche, zieleorientierte Hilfe (Klein aber Fein) !

Muchacho

ToFaceTeKilla 9. Dez 2009 09:46

Re: TMemo kopiergeschützt
 
Zitat:

Zitat von Muchacho
@haentschman: geht nicht, weil ich ScrollBars benutzen muss

Geht jawohl! :-)
Darfst das transparente nur nich über die Scrollbars legen sondern nur über den Text-Bereich!

Muchacho 9. Dez 2009 09:53

Re: TMemo kopiergeschützt
 
OK :-D

Die Lösung von toms, die ich jetzt benutze, ist wirklich sehr gut!


Muchacho

Muchacho 9. Dez 2009 10:16

Re: TMemo kopiergeschützt
 
Zitat:

Zitat von ToFaceTeKilla
Zitat:

Zitat von Muchacho
@haentschman: geht nicht, weil ich ScrollBars benutzen muss

Geht jawohl! :-)
Darfst das transparente nur nich über die Scrollbars legen sondern nur über den Text-Bereich!

Hopla :shock:

geht das auch bei Memo.Align := alClient ? (und einem z.B. Splitter neben dem Memo? :mrgreen:)

Muchacho

ToFaceTeKilla 9. Dez 2009 10:24

Re: TMemo kopiergeschützt
 
Müsste doch, wenn du die transparente Komponente draufflanschst, richtig anpasst und dann alle vier Anchors setzt?!
Korrigiert mich, falls ich mich irre ;-)

Muchacho 9. Dez 2009 10:29

Re: TMemo kopiergeschützt
 
hahaha :-D

Sehr gut, aber eigentlich ist das nicht mehr wichtig.

Ich habe die Lösung von toms genommen :wall:

Muchacho

holliesoft 9. Dez 2009 10:30

Re: TMemo kopiergeschützt
 
Hallo,

wie wäre es mit einer Listbox statt einem Memo?

Gruß
Patrick

Muchacho 9. Dez 2009 10:39

Re: TMemo kopiergeschützt
 
Ok, also noch einmal.

Ich habe die sehr professionelle Lösung von toms genommen.

Ich gebe zu, dass solche Art von Programmierung beherrsche ich nur bedingt. :oops:

Es wäre unglaublich, wenn man die toms-Lösung um eine sehr elegante Funktion erweitern könnte:


Falls der User z.B. nur 3 Zeilen aus dem Memo herauskopiert, dann erlaube ich das, falls mehr, dann nicht.


Muchacho

schöni 9. Dez 2009 11:02

Re: TMemo kopiergeschützt
 
Zitat:

Zitat von Luckie
Wo kommt der Text denn her? Und was machst du, wenn du es doch schaffen solltest und jemand macht einen Screenshot? Oder schreibt es einfach ab?

Wenn du den Text wirklich vor Kopieren schützen willst, zeig ihn nicht an.

Was ist an diesem Vorhaben denn so verwerflich?

Geh mal auf http://www.thaifrau.org

Klicke dann eines der Bilder der Damen an. Dann erscheint ein größeres Foto der ausgewählten Dame. Versuche dann, es auf Deiner Festplatte zu speichern. Mit Rechtsklick und dann Grafik speichern unter... wird das nämlich nicht funktionieren. Stattdessen erscheit ein Mitteilungsfenster mit der Meldung, das das Foto urheberrechtlich geschützt ist.

Mir Deiner Logik könnte ich die Dame natürlich abmalen und habe dann auch eine Abbildung von ihr.

DeddyH 9. Dez 2009 11:05

Re: TMemo kopiergeschützt
 
Also ich konnte mir das Bild auf dem Desktop speichern, nachdem ich Javascript temporär deaktiviert hatte :zwinker:

Muchacho 9. Dez 2009 11:11

Re: TMemo kopiergeschützt
 
@DeddyH: Da bist Du ein Teufelskerl


schöni meint dies jedoch anders:

Man wird hier von einem Moderator grundlos blöd angemacht, schade


Muchacho

DeddyH 9. Dez 2009 11:16

Re: TMemo kopiergeschützt
 
Das war mir schon klar, ich wollte nur darauf hinweisen, dass es meist nur eine Frage des Aufwands ist, solche Mechanismen zu umgehen. Wobei ich nicht sagen will, dass Dein Anliegen komplett sinnlos sei, im Gegenteil, ich finde die Lösung von toms sehr interessant, vielleicht brauche ich etwas Ähnliches auch mal irgendwann. Und reg Dich nicht auf, Mods sind auch nur Menschen.

schöni 9. Dez 2009 11:23

Re: TMemo kopiergeschützt
 
Zitat:

Zitat von DeddyH
Also ich konnte mir das Bild auf dem Desktop speichern, nachdem ich Javascript temporär deaktiviert hatte :zwinker:

Auch wieder wahr. Hab es auch grad so gemacht. >Hmmm<

Muchacho 9. Dez 2009 11:27

Re: TMemo kopiergeschützt
 
Detlef, :-D

ich bin ganz ruhig.

Ich kann hier nicht ausführlich beschreiben um welche Daten sich hier handelt, die kopiergeschützt sein sollten, dennoch:

Ich programmiere schon seit mehreren Jahren und erst jetzt bin ich auf dieses Problem gestoßen.

Auch, wie ich feststellen konnte, war meine Frage neu auf diesem Forum (habe zu diesem Thema nichts gefunden),

darum, finde ich, auch sehr interessant.


Wenn eine Firma mit großem Aufwand bestimmte Daten, die allgemein zugänglich sind, zusammen trägt,

ist doch selbstverständlich, dass man die Zusammenstellung solchen Daten auch schützen möchte.


Muchacho

holliesoft 9. Dez 2009 11:42

Re: TMemo kopiergeschützt
 
Zitat:

Zitat von Muchacho
Ok, also noch einmal.

Es wäre unglaublich, wenn man die toms-Lösung um eine sehr elegante Funktion erweitern könnte:


Falls der User z.B. nur 3 Zeilen aus dem Memo herauskopiert, dann erlaube ich das, falls mehr, dann nicht.


Muchacho

Hmm, dann nochmals meine Frage von oben: Warum keine Listbox statt eines Memos?
Dann könntest Du z.B. das Kopieren der markierten Zeile erlauben, indem Du auf strg+c selbst reagierst und die derzeit markierte Zeile in die Zwischenablage kopierst.

Muchacho 9. Dez 2009 11:54

Re: TMemo kopiergeschützt
 
@holliesoft

Dein Vorschlag ist auch sehr interessant, danke. :-D


Nun, mein Anliegen als Programmierer sieht immer so aus:

toms Lösung ist sehr allgemein (und auch sehr elegant).

Das bedeutet, dass ich praktisch auch jede andere Komponente die Daten anzeigt
die herauskopiert werden können durch diese Vorgehensweise schützen kann.

Lösungen, die sich gezielt nur auf ein bestehendes Problem beziehen sind nicht schlecht,
dennoch immer einer allgemeiner Lösung unterlegen.

Zum Thema:

Könnte ich noch dazu feststellen, bevor ich das Kopieren verbitte,

die String Größe die kopiert sein sollte, wäre die Lösung mehr als perfekt.



Muchacho

DeddyH 10. Dez 2009 08:14

Re: TMemo kopiergeschützt
 
Müsste die Länge des markierten Textes nicht in SelLength stehen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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