Autor Beitrag
phquest
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 16.06.03 23:48 
Hallo,

ist es möglich eine best. Grafik (in diesem Fall Werbebanner) nicht mit herunterzuladen und so den Downloadvorgang zu beschleunigen? Wie gesagt, es soll nur ein Bild nicht angezeigt werden.

Ich hatte schonmal überlegt, falls es mit der TWebBrowser Komponente selbst nicht geht, erstmal irgendwie nur den Quelltext zu ziehen (über eine andere Komponente), dann diesen zu bearbeiten (Werbebanner rausnehmen), und den geänderten Code dann an die TWebBrowser Komponente zu senden. Was meint Ihr dazu?

Danke schonmal im voraus

phquest
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Mo 16.06.03 23:59 
Hab deine Idee mal umgesetzt:

ausblenden volle Höhe 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:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
uses
  ActiveX, WinInet;

function DownloadURL_NOCache(const aUrl: stringvar s: string): Boolean;
var
  hSession: HINTERNET;
  hService: HINTERNET;
  lpBuffer: array[0..1024 + 1of Char;
  dwBytesRead: DWORD;
begin
  Result := False;
  s := '';
  hSession := InternetOpen(PChar(Application.ExeName), INTERNET_OPEN_TYPE_PRECONFIG, nilnil0);
  try
    if Assigned(hSession) then
    begin
      hService := InternetOpenUrl(hSession, PChar(aUrl), nil0,
        INTERNET_FLAG_RELOAD, 0);
      if Assigned(hService) then
      try
        while True do
        begin
          dwBytesRead := 1024;
          InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
          if dwBytesRead = 0 then
            Break;
          lpBuffer[dwBytesRead] := #0;
          s := s + lpBuffer;
        end;
        Result := True;
      finally
        InternetCloseHandle(hService);
      end;
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;

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;

procedure TForm1.Button1Click(Sender: TObject);
const
  URL = 'http://www.sensor-systems.com/biggraphic.html';
  FILTER_IMG = '<img src="images/2000rgb.jpg" width="1772" height="1338">';
var
  htmlCode: string;
begin
  if DownloadURL_NOCache(URL, htmlCode) then
    htmlCode := StringReplace(htmlCode, FILTER_IMG, '', []);
  WB_LoadHTML(Webbrowser1, htmlCode);
end;
phquest Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 17.06.03 12:05 
ich denk mal das einzige Problem das dabei entstehen könnte, ist das die Pfade zu den anderen Grafiken nicht mehr stimmen, da die TWebBrowser Komponente ja nicht mehr weiß wo das richtige DocumentRoot ist. Also müsste man die anderen Grafikpfade entsprechend ändern.