2010-03-27 16 views
7

Küçük bir uygulamayı kodluyorum, ortada verilerimi almak için javascript'i çalıştırmam gereken bir noktada vurdum.delphi içinde javascript nasıl çalıştırılır?

Sürecimde, bazı URL'lere giriş yapmalı ve sonra bir sayfaya gitmeli ve bundan veri almalıyım. Ben indy idhttp ile tüm bunları yaptım, değer almak için javascript gerektiren bir sütun dışında tüm bilgi var, o zaman benim için çalışmasını sağlamak için twebbowser kullanmayı denedim, ama nasıl webbrowser etkinleştirmek için çerezleri kullanabilirim?

i browserto ('http://mysite.com/login.php kullanıcı ve pas ') navigasyon, iyi onun içinde loged ve sonra ben (' http://mysite.com/link1/example.php') gibi sonraki bağlantıya ulaşmak için çalıştık ama

herhangi bir yardım takdir :(Giriş sayfasına yönlendiren:)

cevap

2

En iyi bahsiniz IE kendini otomatikleştirmek için. embeddedwb'un bir kopyasını alın, bir forma bırakın ve bir şeyi yürütmek için gereken URL'ye gidin. Bir OLEVariant döndüren bileşenin bir belge özelliği var, bunu DHTML stil deyimi yürütmek için kullanın .. document.form.submit; gibi bir şey.

Otomasyon için kullanılan pencereyi kolayca gizleyebilirsiniz, kullandığım bir teknik, bir sayfa kontrolünde yeni bir sayfaya yerleştirmek, durumu görüntülemek için ikinci bir sayfa eklemek, ardından durum sayfasını göstermek ve sekmeleri gizlemek. .

+0

Bu bir Windows Hizmetinde yapılabilir mi? Veya bir Win32 uygulaması olmak zorunda mı? –

6

Şimdi sorunuz nedir? Başlıkta JavaScript'in nasıl çalıştırılacağını soruyorsunuz.

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; 

Numune kullanımı: Aşağıdaki deneyin

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

(Bu ve daha fazlası here bulunabilir).


Sonra metinde sen (TWebBrowser kullanırken bu işlem otomatik olarak gerçekleşmelidir) çerezleri nasıl kullanılacağı istiyoruz. Indy HTTP kullanırken, TIdHTTPClient örneğinize bir TIdCookieManager iliştirmeniz yeterlidir, hepsi budur (ancak komut dosyası gereksinimi nedeniyle bunu yine de kullanmak istemezsiniz).