Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TWebbrowser URL als Parameter übergeben (https://www.delphipraxis.net/66811-twebbrowser-url-als-parameter-uebergeben.html)

G4RFiELD 4. Apr 2006 17:58


TWebbrowser URL als Parameter übergeben
 
Hallo.

Habe folgendes Problem. Wenn ich den TWebbrowser Links im Self-Formular öffnen lasse klappt das wunderbar,
allerdings werden diese ohne eigenen Taskbarbutton erstellt. Das lässt sich zwar mit "Param..." ändern, ist aber voller Bugs.

Also ist meine 2. Idee die zu öffnende URL mittels Parameter an das Programm via ShellExecute zu übergeben. #

Problem: Wie komme ich an die URL des (per rechtsmaustaste-auf-link -> in neuem Fenster öffnen) zu öffnenden Links?
Hab es mit dem ObBeforeNavigation2-Event versucht, dieser wirft mir aber leider nur die Aktuelle URL aus, sobald ich diese in neuem fenster öffnen lassen will, denn dies muss ja über OnNewWindow.. passieren.

Bin echt Ratlos...will doch nur vernünftiges öffnen eines neuen fenstern mit einer URL haben welches in einem NEUEN Browser dargestellt wird.

Für sachdienliche Hinweise wäre ich sehr dankbar.


Gruß, die kleine dicke Katze.

mkinzler 4. Apr 2006 18:17

Re: TWebbrowser URL als Parameter übergeben
 
ParamStr(1) ?

G4RFiELD 4. Apr 2006 20:50

Re: TWebbrowser URL als Parameter übergeben
 
Ja...das weiss ich auch...aber wie krieg ich die URL aus dem TWebbrowser?

Klaus01 4. Apr 2006 20:56

Re: TWebbrowser URL als Parameter übergeben
 
gelöscht- weil es Unsinn war.

Grüße
Klaus

G4RFiELD 5. Apr 2006 19:30

Re: TWebbrowser URL als Parameter übergeben
 
*push* Hat denn sonst keiner mehr ne Idee?

Klaus01 5. Apr 2006 19:57

Re: TWebbrowser URL als Parameter übergeben
 
Ein wenig gesurft und eine Menge gefunden - suchen lohnt!

http://www.swissdelphicenter.ch/en/showcode.php?id=1014

http://groups.google.de/group/borlan...4e3cf3d589b75e
http://groups.google.de/group/borlan...9b232f5148eaf1
http://groups.google.de/group/borlan...335bd680942a9b

Kannst ja mal darin stöbern, schaut recht gut aus.

Grüße
Klaus

marabu 5. Apr 2006 19:59

Re: TWebbrowser URL als Parameter übergeben
 
Herzlich willkommen in der Delphi-PRAXiS, Garfield.

Dein Wunsch lässt sich besonders leicht umsetzen, wenn du statt des WebBrowsers die erweiterte Komponente EmbeddedWebBrowser verwendest. Diese kennt bereits das Ereignis OnShowContextMenu() als published property. Der event handler bekommt das Interface IDispatch des Elements unter der Maus als letzten Parameter übergeben. Etwas aufwendiger wird es, wenn du selbst die Schnittstelle IDocHostUIHandler für deine Form implementieren willst.

Freundliche Grüße vom marabu

G4RFiELD 6. Apr 2006 16:32

Re: TWebbrowser URL als Parameter übergeben
 
Hallo.
Erstmal danke für die Tipps...hab das Programm jetzt auf TEmbeddedWB umgestellt...allerdings habe ich immernoch probleme die URL aus dem OnShowContextMenu Event auszulesen. Wenn ichs richtig verstanden habe ist due URL in der Dispatch Variable...aber wie konvertiere ich diese in einen brauchbaren URL-STRING? (ich weiss...is bestimmt ne doofe frage) :-)

marabu 6. Apr 2006 18:16

Re: TWebbrowser URL als Parameter übergeben
 
Ein möglicher Ansatz wäre:

Delphi-Quellcode:
uses
  Variants,
  StrUtils,
  MSHTML;

function ExtractLink(e: IHTMLElement): String;
begin
  if AnsiIndexText(e.tagName, ['a']) = 0 then
    Result := VarToStr(e.getAttribute('href', 0))
  else if Assigned(e.parentElement) then
    Result := ExtractLink(e.parentElement)
  else
    Result := '';
end;
Die Funktion wird mit ExtractLink(pdispReserved as IHTMLElement) aufgerufen und liefert in der gezeigten Version einen URL, wenn einer vorhanden ist und zwar auch dann, wenn es sich um einen image link handelt. Geht auch ohne Rekursion.

marabu

G4RFiELD 7. Apr 2006 15:49

Re: TWebbrowser URL als Parameter übergeben
 
Aber wo hab ich die URL in einer variablen vom Typ IHTMLElement?

marabu 7. Apr 2006 15:55

Re: TWebbrowser URL als Parameter übergeben
 
Aus meinem Testcode:

Delphi-Quellcode:
function TDemoForm.WebBrowserShowContextMenu(const dwID: Cardinal;
  const ppt: PPoint; const pcmdtReserved: IInterface;
  const pdispReserved: IDispatch): HRESULT;
var
  e: IHTMLElement;
  href: String;
begin
  Result := S_FALSE;
  href := ExtractLink(pdispReserved as IHTMLElement);
  if href <> '' then
  begin
    Result := S_OK;
    LinkCopyAction.Hint := href;
    WebMenu.Popup(ppt.X, ppt.Y);
  end;
end;
marabu

mkinzler 7. Apr 2006 15:58

Re: TWebbrowser URL als Parameter übergeben
 
oder .document.URL sieh auch bei MSDN

marabu 7. Apr 2006 16:06

Re: TWebbrowser URL als Parameter übergeben
 
Ich ging davon aus, dass Garfield mit der Maus auf einen Link zeigen möchte und diesen über ein eigenes Kontextmenü "In neuem Fenster öffnen" will.

marabu

mkinzler 7. Apr 2006 16:10

Re: TWebbrowser URL als Parameter übergeben
 
Hallo Achim meine Antwort bezog sich nur auf die Frage:
Zitat:

Aber wo hab ich die URL in einer variablen vom Typ IHTMLElement?
und hat sich dann mit deiner Antwort überschnitten ( roter Rahmen und so). Ich hab dann den Text gekürzz. keine Angst, will nicht in deinen Jagdgebieten wildern ;-)

marabu 7. Apr 2006 16:17

Re: TWebbrowser URL als Parameter übergeben
 
Hallo Markus,

ich bin kein Jäger - bin nur ein alter Vogel. Ich freue mich über jeden, der meinen Quatsch querliest. Das wäre ja schlimm wenn es in der DP feste Abonnements geben würde.

Freundliche Grüße

marabu

G4RFiELD 7. Apr 2006 16:25

Re: TWebbrowser URL als Parameter übergeben
 
Juchuu hat geklappt. Mit ner global definierten "href" variable kann ich so die Url an ein ShellExecute übergeben. 1000-Dank!!

einfach112 17. Jun 2007 13:59

Re: TWebbrowser URL als Parameter übergeben
 
Tja ich habe nun leider genau das gleiche problem ......
nur frage ich mich leider nun wie genau du die href variable her bekommst .....
hat da jemand eine idee wie ich diese erstelle !?
mfg
einfach111
(thx schonmal im vorraus )

marabu 17. Jun 2007 14:11

Re: TWebbrowser URL als Parameter übergeben
 
Hallo,

mir scheint, dass Garfield die Variable href an einer Stelle (global) deklariert hat, auf die er auch außerhalb seines event handlers noch zugreifen kann.

Grüße vom marabu


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