![]() |
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 |
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. |
Re: TMemo kopiergeschützt
Hallo,
man könnte auch ein eigenes Popup-Menü mit den gewünschten Funktionen hinterlegen, also alles außer kopieren... |
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. |
Re: TMemo kopiergeschützt
Zitat:
|
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. |
Re: TMemo kopiergeschützt
Hallo
Das Kopieren von Text kannst du durch Abfangen von WM_COPY verhindern.
Delphi-Quellcode:
Wenn auch Msg.Msg auf WM_GETTEXT überprüft wird, kann der Text auch nicht mehr von "außen" ausgelesen werden.
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; Musst nur überprüfen, ob dies keine anderen "Nebenwirkungen" mit sich bringt. |
Re: TMemo kopiergeschützt
...oder ganz simpel. Legst du was transparentes drüber, da kann man gar nicht erst markieren.
:hi: |
Re: TMemo kopiergeschützt
Zitat:
Gruss Reinhard |
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 |
Re: TMemo kopiergeschützt
Zitat:
Darfst das transparente nur nich über die Scrollbars legen sondern nur über den Text-Bereich! |
Re: TMemo kopiergeschützt
OK :-D
Die Lösung von toms, die ich jetzt benutze, ist wirklich sehr gut! Muchacho |
Re: TMemo kopiergeschützt
Zitat:
geht das auch bei Memo.Align := alClient ? (und einem z.B. Splitter neben dem Memo? :mrgreen:) Muchacho |
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 ;-) |
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 |
Re: TMemo kopiergeschützt
Hallo,
wie wäre es mit einer Listbox statt einem Memo? Gruß Patrick |
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 |
Re: TMemo kopiergeschützt
Zitat:
Geh mal auf ![]() 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. |
Re: TMemo kopiergeschützt
Also ich konnte mir das Bild auf dem Desktop speichern, nachdem ich Javascript temporär deaktiviert hatte :zwinker:
|
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 |
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.
|
Re: TMemo kopiergeschützt
Zitat:
|
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 |
Re: TMemo kopiergeschützt
Zitat:
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. |
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 |
Re: TMemo kopiergeschützt
Müsste die Länge des markierten Textes nicht in SelLength stehen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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