Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Markierten Text aus Webbrowser auslesen (https://www.delphipraxis.net/66289-markierten-text-aus-webbrowser-auslesen.html)

Yheeky 27. Mär 2006 23:31


Markierten Text aus Webbrowser auslesen
 
Hi,

ich würde gerne folgendes realisieren. Ich habe mein Programm am Laufen und würde diesem gerne Daten aus einem Browser zur Verfügung stellen. Das heikle an der Sache ist, dass diese Daten, die direkt aus dem Browser kommen, nicht manipuliert werden dürfen.

Beispiel:
Im Browser steht: Max Mustermann, Musterstraße 1, 12345 Musterstadt

Wenn man diese Daten nun mit Strg. + C. oder einfach über die Kopieren Funktion des Browsers in die Zwischenablage kopiert, lassen sich die Daten ja problemlos mit einem Texteditor verändern. Von dem Texteditor können die Daten ja nun wieder in die Zwischenablage kopiert werden und entsprechen damit nicht mehr den Originaldaten aus dem Browser.

Wie kann ich dieses Problem umgehen ohne den Quelltext der HTML Seite weiterzuverarbeiten?


Ich hoffe mir kann jemand helfen...

chaosben 28. Mär 2006 05:24

Re: Markierten Text aus Webbrowser auslesen
 
Naja, der Weg über die Zwischenablage ist, wie du schon richtig erkannt hast, manipulierbar.
Deshalb solltest du dir die Daten direkt holen. Der offizielle Weg führt imho über das Parsen des HTML's (besser gesagt: parsen lassen).
Alternativ könntest du den Browser fragen, was er denn gerade an selektiertem Text in petto hat. Es gibt hier im Forum einige Ansätze zum Thema "URL ändern beim Browser". Eventuell könntest du darüber an die Infos kommen.

marabu 28. Mär 2006 06:20

Re: Markierten Text aus Webbrowser auslesen
 
Hi Christian,

Zitat:

Zitat von Yheeky
Wie kann ich dieses Problem umgehen ohne den Quelltext der HTML Seite weiterzuverarbeiten?

diese Frage irritiert mich etwas, aber ohne die Zwischenablage kommst du so an den markierten Text:

Delphi-Quellcode:
uses
  MSHTML;

function SelectedText(doc: IHTMLDocument2): String;
begin
  with doc.selection.createRange as IHTMLTxtRange do
    Result := text;
end;

procedure TMainForm.CopyActionExecute(Sender: TObject);
begin
  ShowMessage(SelectedText(WebBrowser.Document as IHTMLDocument2));
end;
Grüße vom marabu

Edit: mehr Ordnung reingebracht...

chaosben 28. Mär 2006 06:43

Re: Markierten Text aus Webbrowser auslesen
 
@marabu: Die Antwort hätte ich ihm auch gern gegeben, aber folgendes hat mich stutzig gemacht:
Zitat:

Zitat von Yheeky
Ich habe mein Programm am Laufen und würde diesem gerne Daten aus einem Browser zur Verfügung stellen.

Mir scheint, die Daten kommen aus irgendeinem Browser. Oder irre ich mich, Christian?

marabu 28. Mär 2006 07:23

Re: Markierten Text aus Webbrowser auslesen
 
Hallo Benjamin,

Zitat:

Zitat von chaosben
Die Antwort hätte ich ihm auch gern gegeben

hättest du ruhig machen können - beim IE braucht Christian den Code so oder so. Ist das IE Fenster außerhalb der Anwendung, dann muss er sich den Zeiger auf die Schnittstelle IHTMLDocument2 anders besorgen: klick.

Für andere Browser-Fabrikate funktioniert der beschriebene Weg nicht.

Freundliche Grüße

marabu

chaosben 28. Mär 2006 08:45

Re: Markierten Text aus Webbrowser auslesen
 
Aha, wieder was gelernt. Danke :)

Yheeky 28. Mär 2006 12:30

Re: Markierten Text aus Webbrowser auslesen
 
Danke erstmal für die Antworten!

Es ist in der Tat so, dass ich den Code von allen verschiedenen Browser einbauen muss.
Ich habe nun aber schon Probleme bei dem oben stehenden Code. Ich habe auf meinem Desktop Delphi 5, auf meinem Laptop Delphi 2005 PE und an diesem sitze ich gerade. Hier wird mir gemeldet, dass er die Unit MSHTML nicht findet. Die Datei MSHTML.dcu gibt es auch nicht auf meinem Rechner. Ich finde sowieso, dass die ganze Installiererei mit Delphi 2005 PE viel komplizierter geworden ist. Kann mir da jemand einen Tipp geben, damit ich den Code mal so testen kann?

BTW: Ich habe auch den Link verfolgt und die Uses MSHTML_TLB, SHDocVw_TLB konnten ebenfalls nicht gefunden werden.

marabu 28. Mär 2006 12:53

Re: Markierten Text aus Webbrowser auslesen
 
Hallo Christian,

die Unit MSHTML.PAS kannst du dir selbst erstellen:

Code:
TLIBIMP -Fe- %windir%\system32\mshtml.tlb
Kopiere dir die erstellten Dateien in dein Source-Verzeichnis für Komponenten und installiere sie über ein neues Package.

marabu

Yheeky 28. Mär 2006 13:05

Re: Markierten Text aus Webbrowser auslesen
 
Zitat:

Zitat von marabu
Hallo Christian,

die Unit MSHTML.PAS kannst du dir selbst erstellen:

Code:
TLIBIMP -Fe- %windir%\system32\mshtml.tlb
Kopiere dir die erstellten Dateien in dein Source-Verzeichnis für Komponenten und installiere sie über ein neues Package.

marabu

Wie kann ich die denn erstellen? *g* TLIBIMP? Was ist das?

marabu 28. Mär 2006 13:14

Re: Markierten Text aus Webbrowser auslesen
 
Ich habe unterstellt, dass TLIBIMP im BIN Verzeichnis deiner Delphi-Installation liegt. Wenn nicht, dann hilft dir vielleicht dieser thread: klick

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:32 Uhr.
Seite 1 von 3  1 23      

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