全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2585
推到 Plurk!
推到 Facebook!

如何確定IE已完全讀完該網頁?

缺席
HomeSound
中階會員


發表:44
回覆:178
積分:94
註冊:2002-08-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-04 12:07:13 IP:61.30.xxx.xxx 未訂閱
如題,IE的右下角有一讀取網頁進度指示, 如何判斷已經完全讀完該網頁呢? 感謝您. --==多看.多學.多聽==--
------
--==多看.多學.多聽==--
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-04 17:43:23 IP:61.218.xxx.xxx 未訂閱
HomeSound您好:
判斷Internet Explorer是否為busy    void __fastcall TForm1::Button1Click(TObject *Sender)
 {  
  Variant IEbrowser;
  HWND hWnd;
  if( VarIsEmpty( IEbrowser ) )
  {
     IEbrowser = CreateOleObject("InternetExplorer.Application");
  }
  if(!(hWnd = FindWindow( "IEFrame", NULL )))
  {
      IEbrowser = CreateOleObject( "InternetExplorer.Application" );
      hWnd = FindWindow( "IEFrame", NULL );
  }
  if(hWnd)
  {
     IEbrowser.OlePropertySet("Visible",true);
     ::SetForegroundWindow( hWnd );
     IEbrowser.OleProcedure("Navigate","http://delphi.ktop.com.tw");
  }
    Sleep(1000);//視狀況調整
    if(IEbrowser.OlePropertyGet("Busy")<1)
             ShowMessage("瀏覽器忙碌中");
 }
如果Busy命令傳回值等於-1,表示Internet Explorer 忙碌,中如果Busy命令傳回值等於1,表示Internet Explorer 不忙碌         以上為個人心得僅供參考:)    相關資訊可參考
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/objects/internetexplorer.asp 1.如果上面的方法不適用可能要用Findwindow相關API取得IE Handle進而取得IE StatusBar上的文字來判別了 2.READYSTATE也許可成為判定的依據....沒試過 < href="http://msdn.microsoft.com/workshop/browser/webbrowser/reference/enums/readystate_enum.asp#READYSTATE_COMPLETE">http://msdn.microsoft.com/workshop/browser/webbrowser/reference/enums/readystate_enum.asp#READYSTATE_COMPLETE
/*生活是一種藝術,用心生活才能享受生活*/
發表人 - axsoft 於 2004/03/04 18:56:54
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-04 19:32:35 IP:61.218.xxx.xxx 未訂閱
//---------------------------------------------------------------------------    #include 
#pragma hdrstop
#include     #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Variant IEbrowser,vReadyState;
  HWND hWnd;
  if( VarIsEmpty( IEbrowser ) )
  {
     IEbrowser = CreateOleObject("InternetExplorer.Application");
  }
  if(!(hWnd = FindWindow( "IEFrame", NULL )))
  {
      IEbrowser = CreateOleObject( "InternetExplorer.Application" );
      hWnd = FindWindow( "IEFrame", NULL );
  }
  if(hWnd)
  {
     IEbrowser.OlePropertySet("Visible",true);
     //::SetForegroundWindow( hWnd );
     IEbrowser.OleProcedure("Navigate","http://delphi.ktop.com.tw");
  }
   // Sleep(1000);//視狀況調整
  Form1->SetFocus(); //必需品
  while(IEbrowser.OlePropertyGet("Busy"))
          {
           Application->ProcessMessages();
           Form1->Caption="瀏覽器忙碌中";
          }
   vReadyState=IEbrowser.OlePropertyGet("ReadyState");
   if (vReadyState==4)
     {
      //  typedef enum tagREADYSTATE {
      //  READYSTATE_UNINITIALIZED = 0,
      //  READYSTATE_LOADING = 1,
      //  READYSTATE_LOADED = 2,
      //  READYSTATE_INTERACTIVE = 3,
      //  READYSTATE_COMPLETE = 4
      //  } READYSTATE;
      ShowMessage("IE Ready!");
      Form1->Caption="IE Ready!";
     }
}
//---------------------------------------------------------------------------    
花了點時間try READYSTATE的Status,上面的Code應該可以符合您的要求了!
/*生活是一種藝術,用心生活才能享受生活*/
HomeSound
中階會員


發表:44
回覆:178
積分:94
註冊:2002-08-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-06 06:49:23 IP:61.30.xxx.xxx 未訂閱
感謝axsoft版主大人解答,小弟try it. Thank You.  依照版大程式,按鈕後有時可以感應,有時後IE已讀完狀態也是忙碌中    可否再問如已知某IE視窗的Handle值 想偵測是否已讀完該如何做, 還是一直偵測IE視窗的Handle值讀完沒 或可否偵測IE讀完的那個ClassName是msctls_statusbar32 的 "完成" 兩個字. 因網址是內部的JavaScript網址無法以IEbrowser開啟 發表人 -
------
--==多看.多學.多聽==--
系統時間:2024-05-04 15:13:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!