線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2762
推到 Plurk!
推到 Facebook!

如何讓 TWebBrowser 元件不下載圖檔 ?

尚未結案
boson
中階會員


發表:74
回覆:155
積分:85
註冊:2004-07-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-01 15:05:14 IP:211.20.xxx.xxx 未訂閱
我使用 TWebBrowser 元件, 瀏覽某一網頁, 然後取得網頁的 html 內容加以處理 這樣的過程, 其實我只需要 TWebBrowser 幫我取得 html 內容即可 但 TWebBrowser 下載完 html 之後, 都會解析其中的連結, 並下載圖片檔 這樣蠻浪費時間與頻寬的 我依稀記得好像可以指示 TWebBrowser 不要下載圖檔 ??? 不曉得該怎麼做 ?
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-01 16:54:41 IP:220.131.xxx.xxx 未訂閱
使用EmbeddedWB元件,把屬性DownloadOptions的DLCTL_DLIMAGES設為False 即可! 參考:http://www.euromind.com/iedelphi/    網海無涯,唯學是岸! 因為擁有,所以分享!
boson
中階會員


發表:74
回覆:155
積分:85
註冊:2004-07-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-01 17:19:23 IP:211.20.xxx.xxx 未訂閱
請問使用 Delphi 內建的 TWebBrowser 元件也可以做到嗎 ? 因為 EmbeddedWB 元件好像沒在維護了, 不敢用
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-01 18:45:52 IP:220.131.xxx.xxx 未訂閱
http://groups.google.com/groups?q=delphi+DLCTL_DLIMAGES&hl=zh-TW&lr=&selm=8qsrga%2415s3%241%40ddt.demos.su&rnum=2    1.繼承TWebBrowser 2.參考EmbeddedWB 單元 自己寫一個DownloadOptions功能        網海無涯,唯學是岸! 因為擁有,所以分享! 發表人 - qoo1234 於 2004/12/01 18:48:36
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-01 18:54:58 IP:220.131.xxx.xxx 未訂閱
unit FzWebBrowser;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics,Controls, OleCtrls, SHDocVw_TLB,
  MSHTML_TLB,ActiveX, shlObj, Wininet, Urlmon,shellapi;    const  DISPID_AMBIENT_DLCONTROL = (-5512);    type      TDownloadControlOption = (
    DLCTL_DLIMAGES, DLCTL_VIDEOS, DLCTL_BGSOUNDS,  DLCTL_NO_SCRIPTS,
  //$00000010,  $00000020, $00000040, $00000080,        DLCTL_NO_JAVA,  DLCTL_NO_RUNACTIVEXCTLS,
    DLCTL_NO_DLACTIVEXCTLS,  DLCTL_DOWNLOADONLY,
  //$00000100, $00000200, $00000400, $00000800,        DLCTL_NO_FRAMEDOWNLOAD, DLCTL_RESYNCHRONIZE,
    DLCTL_PRAGMA_NO_CACHE, DLCTL_NO_BEHAVIORS,
  //$00001000, $00002000, $00004000, $00008000,        DLCTL_NO_METACHARSET, DLCTL_URL_ENCODING_DISABLE_UTF8,
    DLCTL_URL_ENCODING_ENABLE_UTF8,DLCTL_OFFLINEIFNOTCONNECTED,
  //$00010000, $00020000, $00040000, $00080000,        DLCTL_FORCEOFFLINE, DLCTL_NO_CLIENTPULL,
    DLCTL_SILENT, DLCTL_OFFLINE
  //$10000000, $20000000, $40000000, $80000000        );    const
  acardDownloadControlValues: array[TDownloadControlOption] of Cardinal =
  ($00000010, $00000020, $00000040, $00000080,
   $00000100, $00000200, $00000400, $00000800,
   $00001000, $00002000, $00004000, $00008000,
   $00010000, $00020000, $00040000, $00080000,
   $10000000, $20000000, $40000000, $80000000);    type
  TDownloadControlOptions = set of TDownloadControlOption;      TFzWebBrowser = class(TWebBrowser,IDispatch)
  private
    { Private declarations }
    FDownloadOptionValue: Longint;
    FDownloadControlOptions: TDownloadControlOptions;    
    procedure SetDownloadOptions(const Value: TDownloadControlOptions);
    procedure UpdateDownloadControlValue;  
  protected
    { Protected declarations }
    function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
      Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
  public
    { Public declarations }
    property DownloadOptionValue:Longint read FDownloadOptionValue write FDownloadOptionValue;
  published
    { Published declarations }
    property DownloadOptions: TDownloadControlOptions read FDownloadControlOptions write SetDownloadOptions;
  end;    procedure Register;    implementation    function TFzWebBrowser.Invoke(DispID: Integer; const IID: TGUID; LocaleID:Integer;
             Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
begin
  Result := S_OK;
  if (Flags and DISPATCH_PROPERTYGET <> 0) and (VarResult <> nil) and
    (DispId = DISPID_AMBIENT_DLCONTROL) then
    PVariant(VarResult)^ := FDownloadOptionValue
  else
      Result := inherited Invoke(DispID, IID, LocaleID, Flags, Params,
        VarResult, ExcepInfo, ArgErr);
end;    procedure TFzWebBrowser.SetDownloadOptions(const Value: TDownloadControlOptions);
begin
  FDownloadControlOptions := Value;
  UpdateDownloadControlValue;
  (Application as IOleControl).OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL);
end;    procedure TFzWebBrowser.UpdateDownloadControlValue;
var
  i: TDownloadControlOption;
begin
  FDownloadOptionValue := 0;
  if (FDownloadControlOptions <> []) then
    for i := Low(TDownloadControlOption) to High(TDownloadControlOption)do
      if (i in FDownloadControlOptions) then
        Inc(FDownloadOptionValue, acardDownloadControlValues[i]);
end;    procedure Register;
begin
  RegisterComponents('ActiveX', [TFzWebBrowser]);
end;    end.     
網海無涯,唯學是岸! 因為擁有,所以分享!
boson
中階會員


發表:74
回覆:155
積分:85
註冊:2004-07-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-01 22:35:47 IP:211.20.xxx.xxx 未訂閱
我將這個 TFzWebBrowser 元件安裝起來, 過程中卻發生錯誤 錯誤訊息是 A class named TWebBrowser already exists. 奇怪 ?
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-01 23:50:03 IP:220.131.xxx.xxx 未訂閱
參考http://www.euromind.com/iedelphi/gettingstarted/started_d5.htm 只是不安裝EmbeddedWB元件..其他原有delphi的TWebBrowser先移除 其他..如他所說 ..應該OK..    網海無涯,唯學是岸! 因為擁有,所以分享!
系統時間:2024-11-23 19:39:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!