delphi WebBrowser的使用方法詳解(五)-難點釋疑

 

網頁代碼:<SELECT id=fy onchange=TouchRefresh(1) name=fy> <OPTION selected value=15>每頁顯示15筆</OPTION> <OPTION value=30>每頁顯示30筆</OPTION> <OPTION value=60>每頁顯示60筆</OPTION></SELECT>javascript

 

1.webbrowser執行網頁中的JS函數php

若是要執行TouchRefresh(1)函數:html

  webbrowser1.oleobject.document.parentwindow.ExecScript(‘TouchRefresh(1)’,'Javascript');java

webbrowser執行本身的JS函數:
  wb1.OleObject.document.parentwindow.ExecScript('alert(''自定義函數');','javascript');
程序員

 方法2:web

   wb1.Navigate('javascript:alert(''執行成功!'');');
編程



2.webbrowser選擇下拉列表瀏覽器

var服務器

  ole : olevariant網絡

begin

  ole := webbrowser1.oleobject.document.GetElementByID('fy');

  ole.value := 60;  //下拉框用value,複選框和多選框用checked:='true'

  ole.onchange;  //調用onchange事件

end;

 

3.webbrowser按照Form提交(針對提交按鈕無id和name的狀況)

網頁代碼:

<FORM id=loginForm onsubmit="return validate_form()" method=post action=/pass/serviceLoginAuth2><INPUT id=passToken type=hidden name=passToken>

 <INPUT style="DISPLAY: none" id=user class="input_kuang item errortip" name=user>

<INPUT style="DISPLAY: none" id=pwd class="input_kuang item errortip" value="" type=password name=pwd>

<DIV class="sub_login flt_l"><INPUT class=no_bg value=登入 type=submit></DIV>

提交方法:

  webbrowser1.OleObject.document.forms.item('loginForm').submit;

 

4.webbrowser去掉滾動條

在download事件中:
  webbrowser1.oleobject.Document.body.Scroll := 'no';
  webbrowser1.oleobject.Document.documentElement.style.overflow := 'hidden';

webbrowser控制滾動條滾動:
    webbrowser1.OleObject.document.parentwindow.scrollby(0,100);//第一個參數橫向,第二個豎向  scrollby滾動多少
    webbrowser1.OleObject.document.parentwindow.scrollto(0,1000);// scrollto滾動到某個位置

 

 

5.webbrowser屏蔽鼠標右鍵  TEmbeddedWB設置DisabledPopupMenuItems屬性

webbrowser1.DisabledPopupMenuItems := [rcmDefault,rcmImage,rcmControl,rcmTable,rcmSelText,rcmAnchor,rcmUnKnown,rcmImageArt,rcmImgDynSrc,rcmDebug,rcmAll]

 

6.webbrowser屏蔽網頁圖片  TEmbeddedWB設置DownloadImages屬性

  webbrowser1.DownloadOptions := [];

 

7.webbrowser按照元素的屬性獲取元素

function GetDocLinkByHref(doc : IHTMLDocument2;str_url:string):IHTMLAnchorElement;

var
  i               : Integer;
  label_iDispatch : iDispatch;
  label_element   : IHTMLAnchorElement;  //引用mshtml
begin
  Result := nil;

  doc  := webbrowser1.document as Ihtmldocument2;
  if not Assigned(doc) then
    Exit;
  for i:=0 to doc.links.length-1 do
  begin
    label_iDispatch   := doc.links.item(i,0);
    label_element     := doc.links.item(I,0) as IHTMLAnchorElement;
    if   (AnsiPos(str_url,(doc.links.item(I,0) as IHTMLElement).getAttribute('tag',0))>0) 
    then
    begin
      Result := label_element;
      Break;
    end;
  end;
end;

 

8.webbrowser TEmbededwb屏蔽彈窗並捕獲彈窗信息                 //在 TEmbededwb的OnShowMessage事件中處理

procedure TForm1.wb1NavigateComplete2(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
VAR
  str_url : string;
begin
  Wb1.OleObject.document.parentWindow.execScript('window.alert=null;','JavaScript');
  Wb1.OleObject.document.parentWindow.execScript('window.open=null;','JavaScript');
  Wb1.OleObject.document.parentWindow.execScript('window.close=null;','JavaScript');
  Wb1.OleObject.document.parentWindow.execScript('window.showModalDialog=null;','JavaScript');
  Wb1.OleObject.document.parentwindow.execscript('function confirm() {return true;}','Javascript');
end;

 

function TForm1.webbrowser1ShowMessage(Sender: TObject; HWND: Cardinal; lpstrText,  lpstrCaption: PWideChar; dwType: Integer; lpstrHelpFile: PWideChar;

                                                                    dwHelpContext: Integer; var plResult: Integer): HRESULT;
begin
    plResult := IDOK;   //屏蔽alert\open\close等彈窗
    Result := S_OK;  //屏蔽confirm確認框,並點擊確認
   mmo1.Lines.Add(lpstrText);  //lpstrText即爲捕獲到的彈窗內容
end;

 

屏蔽WebBrowser頁面中的聲音

procedure CloseSound;
var 
  hWinmm: Cardinal;
  pwaveOutWrite: Pointer;
  lp: Cardinal;
 begin
  hWinmm := LoadLibrary('Winmm.dll');
  if hWinmm > 0 then
    pwaveOutWrite := GetProcAddress(hWinmm, 'waveOutOpen');
  if pwaveOutWrite  <> nil then begin
    VirtualProtect(pwaveOutWrite, 3, PAGE_EXECUTE_READWRITE, lp);
    Move(#$C2#$18#$00, pwaveOutWrite^, 3);
  end;
end;

//強制Webbroser使用IE8內核 SetWBCoreIE8(8000);

procedure SetWBCoreIE8(i_value:Integer);

var
  str_exeName  : string;
  reg          : TRegistry;
begin
 try
  str_exeName  := RightFromStr(Application.ExeName,'\',False);
  reg          := TRegistry.Create;
  reg.RootKey  := HKEY_LOCAL_MACHINE;
  if reg.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl', False) then
  begin
    if not reg.KeyExists('FEATURE_BROWSER_EMULATION') then
      reg.CreateKey('FEATURE_BROWSER_EMULATION');
  end;
  reg.CloseKey;
  if reg.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', False) then
  begin
    reg.WriteInteger(str_exeName,i_value);
//    if not reg.ValueExists(str_exeName) then
//    begin
//      reg.WriteInteger(str_exeName,i_value);
//    end;
  end;
  reg.CloseKey;
  reg.Free;
 except
 end;
end;


 

 最後奉獻之前收集的關於WB的文章連接:

Delphi Webbrowser

delphi 模擬自動登陸網頁webbrowser delphi webbrowser查找對象實現自動登陸_ delphi webbrowser與delphi互動 !!! WebBrowser組件和MSHTML 在Delphi中的使用Delphi delphi中Webbrowser - Max Woods - 博客園 WebBrowser組件和MSHTML 在Delphi中的使用 webbrowser輕鬆實現自動填表 WebBrowser 操做記要 - 萬一 - 博客園 delphi中Webbrowser的使用技巧 - wystec的日誌 - 網易博客 delphi webbrowser 遍歷網頁元素 Delphi7 Webbrowser製做網頁表單自動提交器按步分析(1) - 中星9號 - 博客園 delphi中如何在多線程環境下操做webbrowser控件 delphi利用webservise登錄百度 VB WebBrowser 爲頁面添加代碼的方法_百度知道 關閉webbrowser的彈出框(對話框 Delphi中WebBrowser(或者EmbeddedWebBrowser)控件打開部分網站報「Invalid floating point operation」異常的解決方法 - XuXn - 博客園 Delphi中webbrowser的document 對象的屬性方法事件_硬軟兼得博客_新浪博客 Delphi獲取句柄併發送消息 delphi WebBrowser獲取iframe頁面內容 Twebbrowser如何寫多線程? - Delphi _ 網絡通訊_分佈式開發 【發現】如何屏蔽掉WebBrowser在刷新網頁等時候發出的聲音 - Boringlamb - 博客園 對ExtendedWebBrowser的再擴展(續)_呼吸空間_百度空間 接收IWebBrowser2的自動化事件_My_百度空間 delphi WebBrowser 開發瀏覽器_SAP學習_abap_百度空間 【轉】WebBrowser的Cookie操做(與CookieContainer的關係)_奎宇工做室_百度空間 藍鳥-Delphi的WebBrowser改造,對網頁中Alter等對話框的改造方法(轉載) 如何找到webbrowser打開網頁中flash的接口?可否用這個接口控制flash的播放?_VC高級研究_積木羣組 webBrowser獲取網頁flash句柄模擬單擊的問題 - .NET技術 _ C# VB 如何向 WebBrowser1 中的flash發送左邊點擊事件 - VB _ 網絡編程 用WebBrowser實現HTML界面的應用 擴展 WebBrowser 控件 DragWebBrowser FlashGameWebBrowser_C# 視角_CS程序員之窗 WebBrowser 設置代理(100分) - Delphi _ 網絡通訊_分佈式開發 屏蔽WebBrowser頁面中傳出來的聲音 - jxgxy - 博客園 能夠對同一個程序中的多個WebBrowser設置不用的代理服務器嗎? 本地:雙線路、雙IP、雙網卡 設置上網_我是誰?—Andy Gu_百度空間 Delphi中使用EmbeddedWB屏蔽指定內容的網頁對話框 - Patrick Pullman - 博客園 Web Browser Control – Specifying the IE Version - Rick Strahl's Web Log WebBrowser與IE的關係,如何設置WebBrowser工做在IE9模式下? - BobLiu - 博客園 WebBrowser 中,沒法釋放內存? - CSDN論壇 - CSDN.NET 爲何瀏覽器會使用多進程架構。 - ithzhang - 博客頻道 - CSDN.NET Windows 消息 - 萬一 - 博客園 【WebBrowser】多進程編程(一) - dick_china的專欄 - 博客頻道 - CSDN.NET 如何設置IE8的WebBrowser控件(MSHTML) 的渲染模式 - IE瀏覽器研發 !! 用Tchromium替換webbrowser - Bach - 博客園 webBrowser 控制select 下拉列表_風月無邊_百度空間 html中下拉列表框中的所有屬性 - 已解決 - 搜搜問問 Delphi編寫 修改Cookie的瀏覽器 TEmbeddedWB Component - EmbeddedWB - bsalsa forum webBrowser獲取網頁flash句柄模擬單擊的問題 - CSDN論壇 - CSDN.NET

支持原創,轉載請註明出處!

相關文章
相關標籤/搜索