Entwickler-Ecke

Internet / Netzwerk - TWebBrowser HTML Code ausführen


Novo - Di 03.04.07 16:45
Titel: TWebBrowser HTML Code ausführen
Hi
ich möchte in einem TWebBrowser ein HTML Code ausführen, OHNe es vorher als .html zu speichern un aufzurufen!
Er sagt aber jedes mal, nicht abgeschlossener String, wenn ich es direkt einfüge.

Danke





Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
<object id="VIDEO"
 style="position: absolute; left: -4px; top: 681px;"
 classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"
 type="application/x-oleobject" height="200" width="300">
<param name="URL" value="http://85.25.134.147:10540"><param
 name="SendPlayStateChangeEvents" value="True"><param
 name="AutoStart" value="True"> <param
 name="uiMode" value="mini"> <param
 name="PlayCount" value="9999"></object>


ZeitGeist87 - Di 03.04.07 16:46

Hallo!

Problem sind die Anführungszeichen!

Schau dir mal die Funktion quotedStr() an!

LG
Stefan


Novo - Di 03.04.07 16:54

OK habe es gelöst,
was ich komisch fine, alle sagen, zuerst als HTML speichern, obwohl viele es nicht wollen!

Hier die Lösung:




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
WebBrowser1.Navigate('about:'+'<object id="VIDEO"'
 +'style="position: absolute; left: -4px; top: 681px;"'
 +'classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"'
 +'type="application/x-oleobject" height="200" width="300">'
+'<param name="URL" value="http://85.25.134.147:10540"><param'
 +'name="SendPlayStateChangeEvents" value="True"><param'
 +'name="AutoStart" value="True"> <param'
 +'name="uiMode" value="mini"> <param'
 +'name="PlayCount" value="9999"></object>')


JayEff - Di 03.04.07 17:36

Das + zwischen about: und <.. kannst du weglassen. Beispiel: aString := 'h' + 'a' + 'l' + 'l + 'o'; ist das selbe wie aString := 'hallo';.
Aber das nur nebenbei. Eins stört mich noch: Das Delphiforum hat eine geniale Funktion, die deinen Quellcode wunderschön formatiert ausgibt, mit Syntaxhighlighting, fettgedruckten Schlüsselwörtern und sämtlichen Absätzen, die in deinem Code sind. Diese Funktion lässt sich einfach nutzen, in dem du deinen Code mit Delphi-Tags umschließt, etwa so: <span class="inlineSyntax"><span class="codecomment">{PROTECTTAG9fa743c9d554e63906994cf746cb18fe}</span></span>! :mahn:

Auf diese Weise ersparst du unseren lieben Mods viel Arbeit und ausserdem werden dir die anderen Delphianer gerner helfen, zumal dein Code wesentlich leserlicher ist!

Bitte ändere das doch einfach, in dem du die user defined image-Taste (bzw. für den Inline-Editor, falls im Profil AJAX aktiviert ist, die user defined image-Taste) rechts neben deinem Beitrag benutzt.


Lannes - Di 03.04.07 18:52

Hallo,

@user profile iconNovo
Die Variante mit About ist sehr fehleranfällig, u.A. wenn der übergebene String zu lang wird.


Nimm besser den Code:
:!: Die Unit ActiveX einbinden :!:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var
  sl: TStringList;
  ms: TMemoryStream;
begin
WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
    Application.ProcessMessages;

  if Assigned(WebBrowser.Document) then
  begin
    sl := TStringList.Create;
    try
      ms := TMemoryStream.Create;
      try
        sl.Text := HTMLCode;
        sl.SaveToStream(ms);
        ms.Seek(00);
        (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
      finally
        ms.Free;
      end;
    finally
      sl.Free;
    end;
  end;
end;


Novo - Mi 04.04.07 21:53

danke, werds mir merken.
Nun noch eine Frage:
1.)

Ich habe die ActiveX Componente FlashPlayer installiert und damit eine KeyFM.swf zum laufen gebracht.
Nun liegt diese Datei nicht immer auf Laufwerk C:\.
Auch das Uploaden ist net so toll, da manche Leute ja kein Inet haben bzw nicht imemr verbunden sind.

Da diese Flashanimation nur ein Paar kb groß ist, möchte ich die als Ressource in die .exe integrieren und von da aufrufen.
Bitte schritt für Schritt erklären, ich habe schon die SUFU benutzt, aber nix gefunden, was funktioniert hat.

Ich habe den TshockWaveFlash doppelgeklickt und unter Movie den Pfad:
C:\KeyFM.swf eingegeben.
Wie das jetzt als Ressource?
Von mir aus kann das Programm die Ressource als .swf abspeichern, dann aufrufen, danach wieder löschen!



Dann noch ne frage:

2.)
Wenn ich eien Java Application im TWebBrowswer laufen lasse, kommt eine Fehlermeldung, Debugger aufrufen!
keyfm.de.vu öffnen dann auf Chat ...
dann kommt diese Meldung, funktionieren tuts trotzdem ... o0


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Label1Click(Sender: TObject);
begin
frmOnline.show;
frmOnline.WebBrowser1.Navigate('http://keyfm.de.vu/');
frmOnline.WebBrowser1.SetFocus;
end;






Vielen Dank für eure anregungen!
Das delphi /delphi beherrsche ich jetzt auch xD


Novo - Mi 04.04.07 22:09

Bitte hilft mir noch bei meiner 2. frage..
Ich brauche das noch heute Abend!


dankee


raziel - Mi 04.04.07 22:17

Zum einen: Bitte pro Topic nur eine Frage, weil das Diskutieren mehrerer Fragen in einem Topic meist zu Chaos führt. Deshalb hab ich das hier erstmal zu gemacht. Erstell bitte zu jeder Frage ein eigenes Topic, Danke.

Zum anderen: Bitte nicht drängeln. Schiebepostings sind zwar erlaubt, aber erst nach frühestens 24 Stunden und nicht nach gerade mal 16 Minuten...

Gruß,
raziel