AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Gecko Interface nutzen...

Ein Thema von Z4ppy · begonnen am 7. Jun 2010 · letzter Beitrag vom 2. Okt 2010
Antwort Antwort
Seite 1 von 2  1 2      
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#1

Gecko Interface nutzen...

  Alt 7. Jun 2010, 23:16
Ich hab absolut keine Ahnung, wie ich mit interfaces arbeiten muss ^^

Also: ich habe mir das Delphi Gecko SDK heruntergeladen, weil es damit einige Probleme bezüglich CSS2 und anderem gab, habe ich dann die neuste Version des originalen Gecko SDK integriert. Das funktioniert soweit auch (inklusive JS, Flash usw.).

Nun zu meinem Problem: Ich möchte gerne Klicks auf Links abfangen. Die TGeckoBrowser Komponente bietet zwar "OnLocationChange", das wird aber erst nach dem Laden ausgelöst. Ich möchte den Klick schon vorher abfangen und dann selber behandeln.

Nach viel Gesuche bin ich auf das Interface nsIContentPolicy gestossen mit der Methode shouldLoad(), was genau dem Punkt entspricht, an dem ich ansetzen muss, um mein Ziel zu erreichen. Meine Versuche, das zu implementieren sind allerdings nicht erfolgreich gewesen.
Ich möchte noch dazu sagen, dass ich bisher noch nie selbst Interfaces implementieren musste, ich hatte immer fertige Vorlagen

Mein Codeversuch:
Delphi-Quellcode:
type
  nsIContentPolicy = interface(nsISupports)
  ['{58cf9dca-40b3-6211-a508-7351f437a53e}']
    function shouldLoad(aContentType: Cardinal; aContentLocation: nsIURI; aRequestOrigin: nsIURI; aContext: nsISupports; aMimeTypeGuess: nsISupports; aExtra: nsISupports): Cardinal; stdcall;
    function shouldProcess(aContentType: Cardinal; aContentLocation: nsIURI; aRequestOrigin: nsIURI; aContext: nsISupports; aMimeType: nsISupports; aExtra: nsISupports): Cardinal; stdcall;
  end;

  TGeckoBrowserEx = class(TGeckoBrowser,nsIContentPolicy)
  private
    function shouldLoad(aContentType: Cardinal; aContentLocation: nsIURI; aRequestOrigin: nsIURI; aContext: nsISupports; aMimeTypeGuess: nsISupports; aExtra: nsISupports): Cardinal; stdcall;
    function shouldProcess(aContentType: Cardinal; aContentLocation: nsIURI; aRequestOrigin: nsIURI; aContext: nsISupports; aMimeType: nsISupports; aExtra: nsISupports): Cardinal; stdcall;
  end;

const
  REJECT_REQUEST = -1;
  REJECT_TYPE = -2;
  REJECT_SERVER = -3;
  REJECT_OTHER = -4;
  ACCEPT = 1;

var
  Form1: TForm1;
  GeckoBrowser1: TGeckoBrowserEx;

implementation

function TGeckoBrowserEx.shouldLoad(aContentType: Cardinal; aContentLocation: nsIURI; aRequestOrigin: nsIURI; aContext: nsISupports; aMimeTypeGuess: nsISupports; aExtra: nsISupports): Cardinal;
begin
  Form1.Memo1.Lines.Add('asdf'); // zum Überprüfen, dass die Methode auch ausgeführt wurde :P In diesem Fall würde jetzt das Laden erlaubt...
  Result:=ACCEPT;
end;

function TGeckoBrowserEx.shouldProcess(aContentType: Cardinal; aContentLocation: nsIURI; aRequestOrigin: nsIURI; aContext: nsISupports; aMimeType: nsISupports; aExtra: nsISupports): Cardinal;
begin
  Result:=ACCEPT;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  GeckoBrowser1:=TGeckoBrowserEx.Create(self);
  GeckoBrowser1.Parent:=Form1;
  GeckoBrowser1.Show;
  GeckoBrowser1.Top:=8;
  GeckoBrowser1.Left:=8;
  GeckoBrowser1.Width:=1200;
  GeckoBrowser1.Height:=472;
  GeckoBrowser1.LoadURI('http://www.google.com/'); // oder was auch immer, wo halt Links sind, die ich abfangen kann ^^
end;
Nunja, funktioniert genau gar nicht

Wie muss ich das machen?

MfG Z4ppy
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Gecko Interface nutzen...

  Alt 8. Jun 2010, 13:07
Hier habe ich nun mal mein Testprojekt hochgeladen, inklusive der ganzen Gecko Engine Dateien.
Das Delphi Gecko SDK wird benötigt (GeckoComponents und GeckoSDK aus dem Archiv) Der Link dorthin findet sich oben...

Vielleicht kann mir so besser geholfen werden, wenn mir noch zu helfen ist ^^

MfG Z4ppy
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Gecko Interface nutzen...

  Alt 12. Jun 2010, 16:43
Ich habe im MDC (Mozilla Development Center ^^) nun die offizielle Beschreibung des nsIContentPolicy Interface gefunden. Scheint doch etwas komplizierter zu sein, das zu implementieren. Wie muss ich das in Delphi umsetzen? C++ (oder welche Sprache das auch immer ist xD) beherrsche ich nicht wirklich...

MfG Z4ppy
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Gecko Interface nutzen...

  Alt 15. Jun 2010, 00:39
Kann mir wirklich keiner helfen?
Das kann doch nicht soo schwer sein... für euch Profis ^^

MfG Z4ppy
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Gecko Interface nutzen...

  Alt 15. Jun 2010, 01:28
Ich wollte mich mit dem Thema Gecko immer mal befassen. Hab nur gerade das Webkit am Wickel. Wenn ich das mit Cairo unter Windows kompiliert bekomme, dann schauen wir mal weiter.
Also keine Hektik
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Gecko Interface nutzen...

  Alt 15. Jun 2010, 22:44
Alles klar

MfG Z4ppy
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Gecko Interface nutzen...

  Alt 12. Aug 2010, 03:50
Ich erlaube mir mal, hier zu bumpen nach knapp 2 Monaten ^^

MfG Z4ppy
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Gecko Interface nutzen...

  Alt 12. Aug 2010, 08:54
Ich bin an der Front auch noch nicht weiter, aber du kannst ja mal bei
http://sourceforge.net/projects/d-gecko/ schauen ob er weiter ist.

Dort wird das SDK für Delphi weiter entwickelt.
Der letzte commit war allerdings vor 516 Tagen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Gecko Interface nutzen...

  Alt 12. Aug 2010, 12:58
Das ist das, was ich schon verwende, und dort wird leider auf dieses Interface gar nicht eingegangen Scheint für den Normalbenutzer nicht wichtig genug zu sein...

MfG Z4ppy
  Mit Zitat antworten Zitat
Benutzerbild von r2d2-aeg
r2d2-aeg

Registriert seit: 4. Okt 2009
12 Beiträge
 
#10

AW: Gecko Interface nutzen...

  Alt 20. Aug 2010, 23:39
Hallo
hätte mal ne Frage:
wie kann ich denn die originale Gecko SDK in die Delphi Gecko SDK integrieren?

LG R2D2-AEG
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:24 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