Oppure

Loading
03/03/10 22:44
gvigliani
Postato originariamente da GrG:

mm.. non ho capito, quindi hai rinunciato?

perchè mi spiace, in fondo non è difficile, con un pò di impegno e buona volontà puoi risolvere :)


Rinunciare no! Non mi piace lasciare le cose a meta'. Mi piace programmare e cercare di trovare soluzioni a qualsiasi problema mi si ponga davanti.
Di programmi ne ho fatti tanti e ti assicuro che per ognuno di essi c'è stato piu' di un problema di difficile soluzione. Problemi che con il tempo ho risolto anche con l'aiuto di persone piu' esperte di me che mi hanno dato il giusto input.
Il mondo della programmazione , come altri mondi ( quello della sistemistica o del betting) hanno parecchie similitudini e purtroppo molte di queste tendono a far essere questi mondi isole irragiungibili ai piu' o comunque tendono a tenere lontani quelli che non hanno la giusta familiarita' con i linguaggi di programmazione, le loro similitudini e le loro stranezze. Molti ne conosco che hanno lasciato perdere perchè giudicato un mondo di nicchia.
Sono giorni che visito forum, che rivolgo domande , che cerco spiegazioni. Niente. Il massimo che sono riuscito a leggere in giro è come aprire una pagina web. Inserire un dato in una casella dati o premere un pulsante è praticamente una cosa ignota. Io oggi so fare tutto questo e quello che mi manca piano piano riusciro' a raggiungerlo ma , spero che le idee e la voglia ed il piacere di programmare non continui ad essere una cosa per pochi e soprattutto si ricordi che questo forum e questo sito hanno valenza di essere tali fintanto che ci saranno persone come me che hanno voglia di imparare questo modo meraviglioso di rapportarsi con una macchina.

Buona serata a tutti i presenti

Gaspare
aaa
04/03/10 20:39
gvigliani
Postato originariamente da GrG:

allora dipende se la pagina la conosci già e quindi conosci anche i nomi dei campi username e password che metti siano: user e pass allora basta usare:

webbrowser1.document.NomeForm.user.value = "username"
webbrowser1.document.NomeForm.pass.value = "password"

e inviare i dati tramite: webbrowser1.document.NomeForm.submit

se invece è una pagina casuale che non conosci prima di tutto devi cercare quanti form sono presenti e qual'è quello con username e password, questa volta sarà più complicato, infatti dovresti scaricarti il sorgente con webbrowser1.document.body.innerHTML e analizzarlo cercando i vari form (tienine il conto partendo da 0) finchè non trovi il form con user e pass, quindi metti che il codice semplificato sia:

<form ...> 'form N°0
</form>
<form ...> 'form N°1
<form action="login.php" method=POST>'from login, N°2
<input ... />
</form>

quindi basta poi usare lo stesso codice di prima, ma al posto di usare NomeForm usa forms(X) dove X è la "posizione" del form in questo caso sarà forms(2)

N.B. Se gli input della pass e dell'username non hanno un nome ti dovrai basare su altri dati come magari l'id..


E rieccomi di nuovo alla carica.
Ho scritto 2 righe di codice per verificare il numero dei frames presenti nella pagina.

'=============================================================
Private Sub Form_Load()
Dim strsource As String, x As Integer
strsource = Inet1.OpenURL("punto13sure.net";)
x = occurs(strsource, "</frameset>";)
Debug.Print x
End Sub

Public Function occurs(ByVal strtochk As String, ByVal searchstr As String) As Long
'remember SPLIT returns a zero-based array
occurs = UBound(Split(strtochk, searchstr))
End Function
==================================================================

Ho utilizzato nella ricerca all'interno della pagina la stringa "</frameset>" che chiude ogni riferimento del frame.
In questo caso il numero dei frame è da 0 a 3.

Il primo problema è risolto.
Il secondo è: come faccio a sapere in quele frame è la casella che mi interessa?
Il terzo è come far puntare un determinato frame in modo da indirizzare il riempimento di una casella proprio su quello.

Magari piano piano con i tuoi aiutini riesco a farlo.

Saluti
aaa
05/03/10 14:32
GrG
per il secondo punto devi usare instr... allora la funzione instr ti restituisce il numero dei caratteri +1 fino all'inizio della parola cercata... se hai tre frame usi instr in un ciclo e così ti ricavi la loro "posizione" poi cerchi sempre con instr il tag form (prima controlla quanti form ci sono) e analizza in che "posizione" sta... certo che se non sai usare bene la funzione instr() di tutto quello che ho scritto non capirai niente...

cmq usando l'altro sistema dovrebbe bastare usare:

dim x as integer
dim str as string
x = -1 'così poi parte da 0
do
x = x +1
str = document.getElementsByTagName('iframe')[x]
doevents
loop until str = "undefined"
msgbox "sono presenti " & x & " frame"

poi vai alla pagina cui punta il frame interessato con...
call webbrowser1.navigate(webbrowser1.document.frames(NUMERO).src)
aaa
05/03/10 15:11
gvigliani
Postato originariamente da GrG:

per il secondo punto devi usare instr... allora la funzione instr ti restituisce il numero dei caratteri +1 fino all'inizio della parola cercata... se hai tre frame usi instr in un ciclo e così ti ricavi la loro "posizione" poi cerchi sempre con instr il tag form (prima controlla quanti form ci sono) e analizza in che "posizione" sta... certo che se non sai usare bene la funzione instr() di tutto quello che ho scritto non capirai niente...

cmq usando l'altro sistema dovrebbe bastare usare:

dim x as integer
dim str as string
x = -1 'così poi parte da 0
do
x = x +1
str = document.getElementsByTagName('iframe')[x]
' Questa linea non mi lavora in VB6
doevents
loop until str = "undefined"
msgbox "sono presenti " & x & " frame"

poi vai alla pagina cui punta il frame interessato con...
call webbrowser1.navigate(webbrowser1.document.frames(NUMERO).src)
aaa
06/03/10 9:04
GrG
ah già... correggila con questa:


str = webbrowser1.document.getElementsByTagName('iframe')[x]
aaa
06/03/10 9:56
gvigliani
Nothing !!!
aaa
06/03/10 17:06
gvigliani
Postato originariamente da GrG:

ah già... correggila con questa:


str = webbrowser1.document.getElementsByTagName('iframe')[x]


'iframe' non lavora perche' VB6 considera l'apice singolo come remark e quindi va in errore

[x] alla fine della riga non ha alcun significato per VB6. Gli array li mette in parentesi tonda. Anche utilizzando le tonde va in errore

Correggendo con str = WebBrowser1.Document.getElementsByTagName("iframe";)
str mi da sempre come valore [object] e quindi la x che è un intero va in overflow

in quest'altro modo
str = WebBrowser1.Document.getElementsByTagName(x)("iframe";)
mi dice che la variabile non è settata

in questo
str = WebBrowser1.Form(x).getElementsByTagName("iframe";)
mi dice che il metodo non è supportato

Saluti
aaa
06/03/10 21:09
GrG
lascia perde, ho trovato una proprietà diretta che ho testato e a me funziona:

Private Sub Command1_Click()
Dim x As Integer
x = WebBrowser1.Document.frames.length
MsgBox "sono presenti " & x & " frame"
End Sub
aaa