2010-03-27 44 views
7

我正在編寫一個小應用程序,在中間我碰到了一些點,我必須執行JavaScript來獲取我的數據?如何在delphi中執行javascript?

在我的過程中,我必須登錄到某個網址,然後轉到某個頁面,並且必須從中獲取數據。我用indy idhttp完成了所有這些工作,除了一列需要javascript來獲取價值之外,我得到了所有信息,然後我嘗試使用twebbowser使它適用於我,但是如何使用cookie啓用webbrowser?

我導航browserto(「http://mysite.com/login.php用戶和通‘),以及其在loged,然後我試圖訪問像(’http://mysite.com/link1/example.php」)下一個環節,但其定向:(

任何幫助讚賞到登錄頁面: )

回答

2

您最好的選擇是自動化IE本身。抓住embeddedwb的副本,放在窗體上,然後導航到你需要執行的URL。有一個組件的文檔屬性返回一個OLEVariant,用它來執行一個DHTML風格的語句..類似document.form.submit;

您可以很容易地隱藏用於自動化的窗口,我使用的一種技術是將其放置在頁面控件的新頁面上,添加第二頁以顯示狀態,然後顯示狀態頁面並隱藏選項卡。

+0

你知道這是否可以在Windows服務中完成?還是它必須是一個Win32應用程序? – 2011-08-04 02:57:09

6

現在你的問題是什麼?在標題中,您會問如何執行JavaScript。請嘗試以下操作:

uses 
    MSHTML_TLB, SHDocVw, ShellAPI; 

function ExecuteScript(doc: IHTMLDocument2; script: string; language: string): Boolean; 
var 
    win: IHTMLWindow2; 
    Olelanguage: Olevariant; 
begin 
    if doc <> nil then 
    begin 
    try 
     win := doc.parentWindow; 
     if win <> nil then 
     begin 
     try 
      Olelanguage := language; 
      win.ExecScript(script, Olelanguage); 
     finally 
      win := nil; 
     end; 
     end; 
    finally 
     doc := nil; 
    end; 
    end; 
end; 

使用範例:

IDoc: IHTMLDocument2; 
Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc); 
ExecuteScript(iDoc, 'document.login.submit()', 'JavaScript'); 

(這多,可以發現here)。


然後在文本你問如何使用餅乾(使用TWebBrowser時,這應該自動發生)。當使用HTTP印,你只需要附加TIdCookieManagerTIdHTTPClient實例,就是所有(但你也許並不一定要使用,由於劇本要求....)

相關問題