2010-03-27 14 views
7

Sto codificando una piccola app, in mezzo ho colpito ad un certo punto in cui devo eseguire javascript per ottenere i miei dati?come eseguire javascript in delphi?

nel mio processo, devo accedere a qualche URL e quindi andare in qualche pagina e devo ottenere i dati da quello. Ho fatto tutto questo con indy idhttp, ho ottenuto tutte le informazioni tranne una colonna che ha bisogno di javascript per ottenere valore, quindi ho provato a utilizzare twebbowser per farlo funzionare per me, ma come posso usare i cookie per abilitato per webbrowser?

ho navigato browserto ('http://mysite.com/login.php utente e pass '), bene il suo loggate e poi ho provato ad accedere prossimo link come (' http://mysite.com/link1/example.php'), ma indirizzare alla pagina di login :(

qualsiasi aiuto apprezzato:)

risposta

2

La tua migliore scommessa sarebbe essere per automatizzare IE stesso. Copia una copia di embeddedwb, rilascia un modulo e vai all'url di cui hai bisogno per eseguire qualcosa. Esiste una proprietà del documento del componente che restituisce un OLEVariant, utilizzare questo per eseguire un'istruzione di stile DHTML .. qualcosa come document.form.submit;.

È possibile nascondere facilmente la finestra utilizzata per l'automazione, una tecnica che ho utilizzato è posizionarla su una nuova pagina su un controllo di pagina, aggiungere una seconda pagina per visualizzare lo stato, quindi mostrare la pagina di stato e nascondere le schede .

+0

sai se questo può essere fatto in un servizio di Windows? O deve essere una App Win32? –

6

Qual è la tua domanda ora? Nel titolo chiedi come eseguire JavaScript. Provare quanto segue: utilizzo

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; 

Esempio:

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

(Questo, e molto altro, si possono trovare here).


Poi nel testo si chiedono come utilizzare i cookie (quando si utilizza TWebBrowser questo dovrebbe avvenire automaticamente). Quando usi Indy HTTP, devi solo allegare un numero TIdHTTPClient alla tua istanza TIdHTTPClient, questo è tutto (ma probabilmente non lo vuoi usare comunque, a causa dei requisiti dello script ....)

Problemi correlati