Entwickler-Ecke
Windows API - IHTMLElement verändert Pfad zu Image
LittleBen - Do 01.05.14 18:14
Titel: IHTMLElement verändert Pfad zu Image
Hallo zusammen,
ich habe folgendes Problem: In einem String steht ein HTML-Text, wo sich ein Bild drin verbirgt. Dieser String soll dann in einem IHTMLDocument2 gespeichert werden.
Der Inhalt:
HTML-Dokument
1: 2: 3: 4: 5: 6: 7:
| <html><head><title></title> </head> <body bgcolor="#ffffff" leftmargin=10 topmargin=10 rightmargin=10 bottommargin=10> <font size=3 color="#000000" face="Times New Roman"> <p><img src="Test.jpg"></p> </font> </body></html> |
Man beachte, der Pfad zum Bild ist relativ!
Jetzt erstelle ich ein IHTMLElement und setzte den
innerHTML:
Delphi-Quelltext
1:
| Element1.innerHTML:= AHTMLCode; |
Danach ist der Pfad total vermurgst bzw. in einen absoluten umgewandelt.
Wie kann man dem Dokument beibringen, dass er die Pfade einfach unverändert lassen soll?
Das Dokument wird "klünstlich" erzeugt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| function GetHTMLDoc2FromString(const AValue: string): IHTMLDocument2; var SafeArr: PSafeArray; Variant: PVariant; Value: WideString; begin Result:= CoHTMLDocument.Create as IHTMLDocument2; Result.designMode := 'on'; while Result.readyState <> 'complete' do Application.ProcessMessages;
SafeArr:= SafeArrayCreateVector(VT_VARIANT, 0, 1); if SafeArr <> nil then begin SafeArrayAccessData(SafeArr, Pointer(Variant)); Value:= AValue; TVarData(Variant^).VType := VT_BSTR; TVarData(Variant^).VOleStr := @Value[1]; SafeArrayUnaccessData(SafeArr); Result.write(SafeArr); end; |
Viele Grüße
Littleben
LittleBen - So 04.05.14 20:02
Hat denn keiner eine Idee? :schmoll:
Das IHTMLDocument3 besitzt ja das Attribut baseURL, was wahrscheinlich bewirken würde, dass die Pfade relativ zu diesem Pfad gesetzt werden.
Solch ein Attribut konnte ich bislang beim IHTMLDocument2 nicht finden. IHTMLDocument2.Location.pathname zu setzen bringt auch nichts.
Martok - Mo 05.05.14 20:01
Ohne jetzt nachgeguckt zu haben ob das denn hilft... was hindert dich denn daran, das IHTMLDocument3 zu holen und damit zu arbeiten? Im Allgemeinen macht MS so ein Benennungsschema, wenn ihnen nachträglich einfällt dass sie Methoden vergessen haben (z.B. IShellContextMenu(1-3)), dürfte hier wohl auch so sein.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!