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
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#1

AW: AcroPdf rechtsklick verhindern

  Alt 24. Okt 2011, 18:01
@himitsu: Schade, dass du auf meine Frage nicht eingegangen bist.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: AcroPdf rechtsklick verhindern

  Alt 24. Okt 2011, 21:04
Dafür müßte ich wissen, wie man die Beiden einbindet, um den Unterschied zu kennen.
Ich seh halt nur öfters, daß einige Programme irgendwie die EXE nutzen.

Ich könnte ja mal nachsehn, was bei unserem Programm eingebunden wird (EXE oder DLL) ... daß wie weiß ich noch in etwa, wo das stand.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
froschprinz

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

AW: AcroPdf rechtsklick verhindern

  Alt 25. Okt 2011, 15:43
o.k.
ich habs mit einem Moushook gelöst. Sobald die PDF aufgerufen wird starte ich den Hook und nach dem Schließen beende ich ihn wieder. Funktioniert ganz gut. Dies könnte evt. auch für andere Anwendungen brauchbar sein, wenn ich sicher(und Systhemweit) den Rechtsklick verhindern will.

Der Quelltext der Dll ist einfacher als gedacht:

Delphi-Quellcode:
library MouseHook;

uses
  Windows, Messages;

{$J+}
const
  Hook: HHook = 0;
{$J-}


{$R *.res}

function HookProc(nCode: Integer; MsgID: WParam; Data: LParam): LResult; stdcall;
begin

 if (MsgID = WM_RBUTTONDOWN) or (MsgID = WM_RBUTTONUP) then
 begin
  //tue nichts
 end else begin
   Result := CallNextHookEx(Hook,nCode,MsgID,Data);
 end;
end;

procedure HookMouse; stdcall;
begin
  if Hook = 0 then Hook:=SetWindowsHookEx(WH_MOUSE,@HookProc,HInstance,0);
end;

procedure UnHookMouse; stdcall;
begin
  UnhookWindowsHookEx(Hook);
  Hook:=0;
end;

exports
  HookMouse, UnHookMouse;
begin

end.
Ulli

Geändert von mkinzler (25. Okt 2011 um 15:58 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: AcroPdf rechtsklick verhindern

  Alt 25. Okt 2011, 15:49
Kann es sein, dass du damit alle rechts Klicks in allen Anwendungen verhinderst? Ich hoffe du sagst das den Benutzern, wenn das der Fall ist. Denn ich glaube, ich würde irre werden, bis ich herausfinde, dass es an deinem Programm liegt. Und dann würdest du von mir eine ziemlich böse E-Mail bekommen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
froschprinz

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

AW: AcroPdf rechtsklick verhindern

  Alt 25. Okt 2011, 16:03
Danke für den Hinweis.Das siehst du genau richtig!

Aber das ist ja gerade der Sinn der Sache.

Meine Anwendung ist eine, die vom Benutzer nicht verlassen werden kann(darf). Sie läuft auf öffentlichen Terminals. Darum will ich ja den Rechtsklick verhindern, da sonst der böse Benutzer des Kontextmenü aufrufen und blödes Zeug anstellen darf!
Ulli
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: AcroPdf rechtsklick verhindern

  Alt 25. Okt 2011, 16:53
Kennst du die Kontextmenütaste?
Wozu die Maus verschwenden, wenn man eine Tastatur hat.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
ASM

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

AW: AcroPdf rechtsklick verhindern

  Alt 25. Okt 2011, 17: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
 
#8

AW: AcroPdf rechtsklick verhindern

  Alt 26. Okt 2011, 16: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 17:05 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 15:35 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