PDA

View Full Version : [.net] compilare un form con campo hidden


MaxDembo81
05-05-2011, 16:42
Salve a tutti,
nella mia applicazione per diminuire i tempi ho fatto in modo che i login ad alcuni siti avvengano in modo automatico.
Il codice, di una banalità unica, è il seguente

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
Try
Select GL_sSessione.PWebsite.ToString
Case "xxxx.html"
WebBrowser1.Document.GetElementById("USERNAME").InnerText = GL_sSessione.PUsername
WebBrowser1.Document.GetElementById("PASSWORD").InnerText = GL_sSessione.PPassword_ASL
WebBrowser1.Document.GetElementById("login").InvokeMember("click")
.
.
etc
.
.
.
End Sub

Oggi mi si presenta un sito con 4 input da compilare fra cui una casella combinata. Per la casella combinata ho usato quest linea di codice

WebBrowser1.Document.GetElementById("ruolo").SetAttribute("selectedIndex", "5") '

però non mi piace tanto perchè preferirei invece che fare il controllo sull'indice, fare il controllo sul contenuto. Ho provato selectedValue e selectedText ma non funzionano. Qual'è l'attributo giusto?

A parte questo che comunque è un problema secondario, il problema principale è che in una di queste inputform non c'è modo di scrivere nessun valore. La schifosa infatti viene creata da un javascript che probabilmente sul documentcomplete del webbrowser ancora non ha dato segno di esecuzione terminata. Ho provato a lanciare sempre dall'evento documentcomplete un thread con while (true) che mi provasse a settare il valore nel campo ma niente.
Poi però ho creato un tasto che fa la stessa cosa (senza ciclo while) e magicamente funziona :confused: :mbe: :confused:
Come faccio ad evitare di passare dalla pressione di un tasto?
Praticamente io dovrei "uscire" dall'evento documentcomplete notificando a un metodo o un thread che può scrivere dentro la textbox o qualcosa di simile....

idee?
grazie

MaxDembo81
05-05-2011, 17:10
non riesco a capire come mai qua dentro non funziona

Private Sub prova()
System.Threading.Thread.Sleep(1000)
While True
Try
Application.DoEvents()
WebBrowser1.Document.GetElementById("workstation").InnerText = "prova"
Catch
End Try
End While

mentre qua si
Private Sub cmdStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStop.Click
'WebBrowser1.Stop()<---- commentato perchè è quello che dovrebbe fare il tasto STOP
WebBrowser1.Document.GetElementById("workstation").InnerText = "prova"
End Sub