AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi AcroPdf rechtsklick verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

AcroPdf rechtsklick verhindern

Ein Thema von froschprinz · begonnen am 23. Okt 2011 · letzter Beitrag vom 30. Okt 2011
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#21

AW: AcroPdf rechtsklick verhindern

  Alt 25. Okt 2011, 17:53
Kennst du die Kontextmenütaste?
Wozu die Maus verschwenden, wenn man eine Tastatur hat.
$2B or not $2B
  Mit Zitat antworten Zitat
ASM

Registriert seit: 16. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#22

AW: AcroPdf rechtsklick verhindern

  Alt 25. Okt 2011, 18:13
Wenn es nur darum geht, den Rechtsklick auf die AcroPDF im eigenen Programm zu verhindern, dann geht das doch (ohne das höchst zweifelhaft über einen globalen Mousehook erzwingen zu wollen) mit Hilfe eines tranparenten Panels, welches deckungsgleich über das AcroPDF gelegt ist und die Mausklicks abfängt. So etwas hat doch bereits himitsu vorgeschlagen.

Es gibt mehrere Komponenten transparenter Panels, mit denen das funktioniert, und zwar problemlos auch hinsichtlich von Grafiken in der PDF. Eine solche Komponente ist z.B. als Unit TransparentPanel veröffentlicht als eine der Antworten bei http://www.experts-exchange.com/Prog..._20950505.html.
Eine andere (Unit TransPanel.pas von Mik Tran) stammt noch aus der Steinzeit von Delphi (1998), arbeitet jedoch immer noch fehlerfrei mindestens unter Delphi 7, und sie ist mit Sicherheit irgendwo im Netz noch zu finden (notfalls im Webarchiv).

Einziger Nachteil ist, dass dann naturlich auch der Linksklick auf die AcroPDF nicht mehr funktioniert. Aber die davon abhängigen Aktionen sind leicht zu erreichen, indem man - wie z.B. für das Zoomen - auf der eigenen Form entsprechende Buttons installiert, die genau diese Aktionen mit Hilfe des Zugriffs auf die entsprechenden Funktionen der AcroPDF auslösen, also z.B. für das Zoomen:
Code:
 AcroPDF1.setZoom(percent: Single);
Und für das Blättern der PDF hält man einfach den Scrollbalken der AcroPDF frei vom TransparentPanel:
Code:
procedure TForm1.FormCreate(Sender: TObject);
var
  ScrollbarWidth: Integer;
begin
 ScrollbarWidth := GetSystemMetrics(SM_CXVSCROLL);
 with TransparentPanel1 do
  begin
    left := AcroPDF1.left;
    top := AcroPDF1.top;
    height := AcroPDF1.height;
    width := AcroPDF1.width - ScrollbarWidth;
  end;
end;
  Mit Zitat antworten Zitat
froschprinz

Registriert seit: 24. Dez 2010
Ort: Graben, Bayern
34 Beiträge
 
Delphi 7 Architect
 
#23

AW: AcroPdf rechtsklick verhindern

  Alt 26. Okt 2011, 17:59
Mein Programm ist auf TouchPanel installiert. Da hat mann keine Tastatur und kommt somit auch nicht an das Kontextmenü.

Der Tip mit dem transparenten Panel ist ganz gut, hat jedoch einen Nachteil: Eine AcroPDF lässt sich bequem mit dem Finger scrollen (ohne Scrollbalken). Einfach den Touchscreen berühren und Finger nach oben oder unten bewegen. Das geht dann leider auch nicht mehr.
Ich komme leider nicht an diese Unit heran, da ich nicht Mitglied von www.experts-exchange.com bin. Kann mir jemand diese Unit schicken?

Übrigens, kann mann überhaupt ein Panel über eine AcroPDF legen? Bei mir bleibt immer der AcroPDF im Vordergrund?

Warum habt ihr so eine Abneigung gegen einen Hook. Das würde ich gerne verstehen????
Ulli

Geändert von froschprinz (26. Okt 2011 um 18:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#24

AW: AcroPdf rechtsklick verhindern

  Alt 26. Okt 2011, 18:15
ich komme auch nicht dran, aber der Inhalt dürfte weitestgehend diesem Konstrukt entsprechen:
ich habe es mal mit TWebbrowser getestet, da ich den Acrobat derzeit nicht installiert habe, Du kannst es transparent abdecken, in diesem Fall funktioniert das transparente Panel sogar brauchbar, für den tagtägliche Einsatz ist es jedoch ungeeignet da es beim stapeln mit anderen VCL Komponenten zu Darstellungsfehlern kommt.

Delphi-Quellcode:
  TPanel=Class(ExtCtrls.TPanel)
    Procedure CreateParams( Var params: TCreateParams ); override;
    Procedure WMEraseBkGnd( Var msg: TWMEraseBkGnd );message WM_ERASEBKGND;
  End;


{ TPanel }

procedure TPanel.CreateParams(var params: TCreateParams);
begin
  inherited;
inherited CreateParams( params );
params.ExStyle := params.ExStyle or WS_EX_TRANSPARENT;
end;

procedure TPanel.WMEraseBkGnd(var msg: TWMEraseBkGnd);
begin
SetBkMode( msg.DC, TRANSPARENT );
msg.result := 1;
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
ASM

Registriert seit: 16. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#25

AW: AcroPdf rechtsklick verhindern

  Alt 27. Okt 2011, 15:16
Ich hatte nicht bedacht, dass auf die von mir genannte Unit TransparentPanel bei experts-exchange nicht frei zugegriffen werden kann. An sich ist der Code dieser Unit aber - bis auf das grundsätzliche Copyright - keinen anderen Restriktionen unterworfen worden. Trotzdem möchte ich ihn ungern hier öffentlich posten.

Stattdessen, falls trotz Bummis Beitrag noch Interesse besteht: Anbei mit Hilfe der ebenfalls erwähnten Komponente TTranspanel von Mik Tran (1998!) mein einfaches Beispiel zur Benutzung von AcroPDF gemäß meiner oben geposteten Beschreibung. Das ZIP-Archiv enthält Quellcode und kompiliertes Programm (kompiliert mit D7 bei 1280x1024 Auflösung, 96 dpi).
Angehängte Dateien
Dateityp: zip AcroPDF View.zip (202,9 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
froschprinz

Registriert seit: 24. Dez 2010
Ort: Graben, Bayern
34 Beiträge
 
Delphi 7 Architect
 
#26

AW: AcroPdf rechtsklick verhindern

  Alt 27. Okt 2011, 21:04
Vielen Dank für Eure Anrworten Brummi und ASM.
Interessante Komponente die TransPanel. Habe es mal ausprobiert mit meiner Anwendung. Scheint zu funktionieren. Was mich etwas stutzig macht ist dass die ViewPDF.exe von ASM bei mir nicht läuft (unbekannter Fehler).
Auch deine ViewPDF.dpr bekomme ich nicht wirklich zum laufen, da mir z.B. die Komponente TrkBar fehlt.
Sind irgendwelche Probleme mit der TransPanel-Komponente bekannt?
Falls es Euch interessiert, woran ich arbeite: www.cabito.net
Ulli

Geändert von froschprinz (27. Okt 2011 um 21:32 Uhr)
  Mit Zitat antworten Zitat
ASM

Registriert seit: 16. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#27

AW: AcroPdf rechtsklick verhindern

  Alt 28. Okt 2011, 00:06
Auch die Komponente TrkBar ist schon uralt (Freeware von Ray Konopka), aber funktioniert ebenso wie die Transpanel unter Delphi 7 immer noch problemlos. Ich reiche TrkBar hier als Anhang nach.

@froschprinz: Warum das kompilierte Programm bei Dir nicht läuft, ist mir rätselhaft. Ich habe es zwar wie alle meine Programme routinemäßig gegen Hacking gesichert und mit UPX gepackt, aber habe bisher damit noch nie Probleme bekommen, und alle laufen unter WinXP und Win7 auf mehreren Rechnern.

Mit Hilfe der Komponenten Transpanel und Trkbar sollte es Dir aber gelingen, mein Beispielprojekt auf Deinem Rechner neu zu kompilieren.
Angehängte Dateien
Dateityp: zip Komponente TrkBar.zip (22,5 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
froschprinz

Registriert seit: 24. Dez 2010
Ort: Graben, Bayern
34 Beiträge
 
Delphi 7 Architect
 
#28

AW: AcroPdf rechtsklick verhindern

  Alt 30. Okt 2011, 08:54
Leider habe ich auch mit dem TrkBar deine ViewPDF nicht zum Laufen bekommen. Beim Öffnen der ViewPDF.dpr bringt Delphi erst dass die ViewPDF.res nicht gefunden wurde und dann Fehler beim Erzeugen von Formular :Unbekannter Fehler.
Kann es sein, dass die TrkBar Komponente nicht mit Windows7 zusammenarbeitet? Seit ich diese Komponente eingefügt habe, schließt Delphi auch manchmal nicht korrekt sondern bringt endlose Schutzverletzungen?

Aber zu meinem eigentlichen Problem (AcroPdf rechtsklick verhindern) bin ich eigentlich schon zufriedengestellt.
Ich habe 2 Optionen:
1. Wenn ich das Scrollen mittels Gestik am Touchscreen aufrechterhalten will, nehme ich den Hook (es sei den mir sagt jemand, warum ich das nicht machen sollte)
2. Wenn ich 1 nicht benötige, leistet der TransPanel gute Dienste.
Ulli
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   

 

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 20:28 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