2010-03-27 20 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实例,就是所有(但你也许并不一定要使用,由于剧本要求....)

相关问题