Jump to content
programadorvb6

Atributos de uma página Html.

Recommended Posts

programadorvb6

Olá bom dia.

Fiz este código , mas deparei-me com o problema do ciclo : [ For Each i As mshtml.IHTMLElement In DocElements ] ; o DocElements , não "tolera" que seja vazio ou que não existam (Elementos).

Fiz assim para fazer a filtragem, mas continuo com o mesmo problema.

Como pode ser solucionado?

Public Sub Faz_Tarefa()
 Dim DocElements As mshtml.IHTMLElementCollection = Nothing
 If Not IsNothing(DocElements) Then ' Fiz aqui a filtragem
	 For Each i As mshtml.IHTMLElement In DocElements
		 Dim Name_Attrib As String = i.getAttribute("name")
		 Dim id_Attrib As String = i.getAttribute("id")
		 If Name_Attrib = Me.TextBox6.Text AndAlso id_Attrib = Me.TextBox5.Text Then
			 i.setAttribute("value", Me.TextBox12.Text)
		 End If
	 Next i
 End If
End Sub

Grato desde já pela vossa atenção

Edited by programadorvb6

______________________________________________________________________________

Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé.
 

Share this post


Link to post
Share on other sites
ribeiro55

É uma collection. Não deverá ser Nothing se preenchida devidamente. Nos casos sem elementos está provavelmente vazia.

O "filtro" teria de ser algo como

If DocElements.Count=0 Then

Presumo que

Dim DocElements As mshtml.IHTMLElementCollection = Nothing

seja por motivos de ornamentação aqui para o forum. Isto porque não te vejo a preencher o DocElements em lado nenhum.

Edited by ribeiro55

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
programadorvb6

Olá Ribeiro.

Fiz assim o código , mas como posso fazer para que os elementos não sejam vazios ou nulos , visto pertencerem a : mshtml.IHTMLElementCollection ?

Public Sub Motor_Login()
Dim User_Pointer As Boolean
Dim Pass_Pointer As Boolean
Dim objIE As New SHDocVw.InternetExplorer
Dim htmlDoc As New mshtml.HTMLDocument
Dim DocElements As mshtml.IHTMLElementCollection = Nothing
Me.WindowState = FormWindowState.Minimized
ShowWindow(objIE.HWND, ShowWindowCommands.SW_MAXIMIZE)
'======================================================
If Not ObjFuncoes.Testa_Link(Me.TextBox5.Text) Then
MessageBox.Show("Link requerido sem ligação. ", "Informação :", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit Sub
End If
objIE.Navigate(Me.TextBox5.Text)
objIE.Visible = True
'======================================================
While objIE.ReadyState <> WebBrowserReadyState.Complete
End While
'======================================================
With objIE
Try
htmlDoc = .Document
DocElements = htmlDoc.getElementsByTagName("input")
If Not IsNothing(DocElements) Then
For Each i As mshtml.IHTMLElement In DocElements
Dim Name_Attrib As String = i.getAttribute("name")
Dim id_Attrib As String = i.getAttribute("id")
'==================================
If Not String.IsNullOrEmpty(Me.DadosATrib_Utiliz.Text) AndAlso Not String.IsNullOrEmpty(Me.DadosCla_Utiliz.Text) Then
If Name_Attrib.Equals(Me.DadosATrib_Utiliz.Text) AndAlso id_Attrib.Equals(Me.DadosCla_Utiliz.Text) Then
i.setAttribute("value", Me.TextBox3.Text)
User_Pointer = True
End If
End If

If Not String.IsNullOrEmpty(Me.DadosATrib_Utiliz.Text) AndAlso String.IsNullOrEmpty(Me.DadosCla_Utiliz.Text) Then
If Name_Attrib.Equals(Me.DadosATrib_Utiliz.Text) AndAlso Name_Attrib.Equals(Me.DadosATrib_Utiliz.Text) Then
i.setAttribute("value", Me.TextBox3.Text)
User_Pointer = True
End If
End If
If String.IsNullOrEmpty(Me.DadosATrib_Utiliz.Text) AndAlso Not String.IsNullOrEmpty(Me.DadosCla_Utiliz.Text) Then
If id_Attrib.Equals(Me.DadosCla_Utiliz.Text) AndAlso id_Attrib.Equals(Me.DadosCla_Utiliz.Text) Then
i.setAttribute("value", Me.TextBox3.Text)
User_Pointer = True
End If
End If
'=====================
' PASSWORD
'=====================
If Not String.IsNullOrEmpty(Me.DadosATrib_Pass.Text) AndAlso Not String.IsNullOrEmpty(Me.DadosCla_Pass.Text) Then
If Name_Attrib.Equals(Me.DadosATrib_Pass.Text) AndAlso id_Attrib.Equals(Me.DadosCla_Pass.Text) Then
i.setAttribute("value", Me.TextBox4.Text)
Pass_Pointer = True
End If
End If

If Not String.IsNullOrEmpty(Me.DadosATrib_Pass.Text) AndAlso String.IsNullOrEmpty(Me.DadosCla_Pass.Text) Then
If Name_Attrib.Equals(Me.DadosATrib_Pass.Text) AndAlso Name_Attrib.Equals(Me.DadosATrib_Pass.Text) Then
i.setAttribute("value", Me.TextBox4.Text)
Pass_Pointer = True
End If
End If
If String.IsNullOrEmpty(Me.DadosATrib_Pass.Text) AndAlso Not String.IsNullOrEmpty(Me.DadosCla_Pass.Text) Then
If id_Attrib.Equals(Me.DadosCla_Pass.Text) AndAlso id_Attrib.Equals(Me.DadosCla_Pass.Text) Then
i.setAttribute("value", Me.TextBox4.Text)
Pass_Pointer = True
End If
End If
'======
Next i
End If
'=== [ conclusão: ]
If User_Pointer = True AndAlso Pass_Pointer = True Then

MsgBox("Ambos os valores encontrados")
ElseIf User_Pointer = False AndAlso Pass_Pointer = False Then
MsgBox("Método Copy / Paste.")
Exit Sub
Else
MsgBox("Prima um botão para aceitar os dados.")
Exit Sub
End If

User_Pointer = False
Pass_Pointer = False

Catch ex As Exception
MessageBox.Show("Ocorreu um erro inesperado ao enviar dados .", "Informação :", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit Sub
End Try
End With
End Sub[/Code]

Edited by programadorvb6

______________________________________________________________________________

Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé.
 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.