Newsgroup: it.comp.lang.visual-basic
Titolo: VB, WebBrowser e DOM di IE

Ciao a tutti,
posto qui un quesito che mi fa sbattere la testa da un paio di giorni, 
spero voi mi possiate aiutare! ;)
Sto utilizzando in un mio semplice programmino il componente in oggetto 
per automatizzare un accesso web.
Nella prima pagina di login ho utilizzato il seguente frammento di 
codice, e funziona divinamente bene:
WebBrowser1.Document.NOME_FORM.NOME_CAMPO_TEXT.Value = VALORE
WebBrowser1.Document.NOME_FORM.NOME_CAMPO_TEXT.Value = VALORE
WebBrowser1.Navigate "javascript:document.NOME_FORM.submit();"
Nella pagina successiva devo compilare un altro form, però questa pagina 
in realtà è un frameset che contiene due pagine: una in alto e una in 
basso. Il form da compilare è nel frame in basso.
Ho provato di tutto, tipo:
-WebBrowser1.Document.frames("NOME_FRAME").NOME_FORM.NOME_CAMPO_TEXT.Value 
= VALORE
-WebBrowser1.Document.frames(1).NOME_FORM.NOME_CAMPO_TEXT.Value = VALORE
-WebBrowser1.Document.frames("NOME_FRAME").document.NOME_FORM.NOME_CAMPO_TEXT.Value 
= VALORE
-WebBrowser1.Document.frames(1).document.NOME_FORM.NOME_CAMPO_TEXT.Value 
= VALORE
-WebBrowser1.parent.frames("NOME_FRAME").NOME_FORM.NOME_CAMPO_TEXT.Value 
= VALORE
-WebBrowser1.parent.frames(1).NOME_FORM.NOME_CAMPO_TEXT.Value = VALORE
e tante altre combinazioni simili senza mai venirne a capo... :(
Gli errori che mi da sono i seguenti:
Nel caso 1) e 2): "Errore di run-time '70': Autorizzazione negata"
Nel caso 3) e 4): "Errore di run-time '-
2147024891
 (80070005)': Accesso 
negato"
Altri errori simili al precedente (che non ho segnato, ma mi pare 
fossero lo stesso) negli altri casi che ho elencato...
Come cavolo posso fare?!? Veramente sto uscendo matto!! :(
Eppure quando non ci sono frame di mezzo non ho nessun tipo di problema!
E non posso nemmeno usare il trucco di aprire direttamente il frame in 
basso tramite il controllo webbrowser, perchè in quel caso la 
compilazione funziona, però mi manda a pu***ne l'autenticazione 
successiva...
Bel problema vero?!?
Confido in voi, spero possiate aiutarmi! ;)
Ale

 Confido in voi, spero possiate aiutarmi! ;)
Ah, dimenticavo, mi sto riferendo a VB6, non DOTNET! :)
Ale

 ha scritto nel messaggio
news:436a343f$0$22300$4faf...@reader1.news.tin.it...

Ciao prova cosi
WebBrowser1.document.frames(1).Document.body.all.item("text1").value="xxx"
l'ho preso da una mia applicazione dove funziona, cosiderà però che potresti
avere problemi con le impostazioni di sicurezza di windows.

 avere problemi con le impostazioni di sicurezza di windows.
Ciao! Intanto grazie x aver risposto! :)
Mmm, ho provato la tua soluzione, ma l'errore è sempre quello:
"Errore di run-time '-
2147024891
 (80070005)': Accesso negato" :(
che poi quel codice d'errore così grande, e pure negativo, mi fa pensare 
ad una sorta di overflow interno a vb... Sparo una cazzata troppo grossa 
secondo te? :\
Cmq sta di fatto che se il codice che mi hai dato funzionava allora 
forse il problema sta da un'altra parte... ma dove?!?
Se può essere utile ti dico che uso win xp pro sp2, con conseguente ie6 sp2.
Ale
p.s.: visto che hai già usato questo controllo, sai mica come bloccare 
eventuali popup che vengono lanciati dalla finestra aperta in webbrowser?

 secondo te? :\
Non lo so, mi sembra un errore dovuto alla sicurezza ma non ne ho la
certezza, io l'ho provata su w2000 sp4.
Se proprio vuoi essere sicuro provalo su una macchina con un S.O. diverso da
Xp.
Ciao.

 WebBrowser1.Navigate "javascript:document.NOME_FORM.submit();"
Hai provato un approccio alternativo?
Alla fine dei giochi, dopo essere passato per quel javascript, il browser,
con tutta probabilità manda al server una stringa del tipo
www.indirizzo.org?parametro1=valore1&....&parametron=valoren
Questa stringa la puoi "sbirciare" intercettando l'evento BeforeNavigate2
del tuo controllo webbrowser, con un po' di intuito dovresti riuscire ad
interpretarla, e capire come costruirti in locale la stessa stringa per
poi utilizzarla con il metodo Navigate. 
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
Se i tempi non chiedono la tua parte migliore, inventa altri tempi. 
(Baolian, libro II, vv. 16-17)
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Grazie anche a te per la risposta!
Allora, quella parte come ho scritto nel post iniziale funziona benissimo!
Il problema è che dopo aver caricato la pagina successiva, questa ha un 
form in un frame interno.
Il mio problema non è fare il submit, ma compilare i campi.
Infatti vb l'errore me lo da nelle righe tipo questa: 
WebBrowser1.Document.frames("NOME_FRAME").NOME_FORM.NOME_CAMPO_TEXT.Value 
= VALORE...
Cmq ho capito che intendi, domani proverò a ricreare la stringa del 
post, e ti faccio sapere! Incrociamo le dita! ;)
Ale