Usuario
InternetExplorer - Navigate y Navigate2 en Windows 7 no funciona

Pregunta
-
Hola,
Con la nueva versión de Windows (tanto Windows 7 Professional como Windows 7 Enterprise), la llamada a Navigate2 del objeto InternetExplorer a dejado de funcionar.
El programa se encargaba de abrir un nuevo IE pasandoloe como parametros unas variables en POST. Con el nuevo sistema operativo, sucede que, tras realizar la llamada a Navigate2 o Navigate, tal y como se carga la página, el IE se cierra al momento, sin cargar ninguna pagina. Queda comprobado que el IE se cierra JUSTO CUANDO SE LLAMA A NAVIGATE o NAVIGATE2 mandandole datos por POST.
Si que funcionaba para versiones anteriores (Windows Vista e Windows XP).
¿Alguien sabe porque?
EL código de la aplicación es algo parecido a esto:Public Function AbrirPaginaPortal(URLPortal As String, Page As String, CodClient As String, UserId As String, Password As String, EsperarCierre As String, IEVisible As String, SaveXmlAs As String, Optional ShowWindowConect As String = "", Optional ShowErrors As String = "", Optional Error As String = "") As Boolean On Error GoTo ErrorAbrirPaginaPortal Dim strPostData As String Dim strHeader As String 'Make the Post Data String strPostData = "UserID=" + Trim(UserId) + "&UserPass=" + Trim(Password) + "&ToPageTask=" + Replace(Trim(Page), "&", "#@#") Dim absPostData() As Byte absPostData() = StrConv(strPostData, vbFromUnicode) 'Post the data If AbrirIE = True Then If IEEsVisible = "1" Then oIE.Visible = True End If oIE.Navigate2 Trim(URLPortal) + "A3FisLoginEx.aspx?CL=" + CStr(CLng(CodClient)), 0, "", absPostData(), strHeader End If Set oIE = Nothing On Error GoTo 0 Exit Function ErrorAbrirPaginaPortal: Set oIE = Nothing On Error GoTo 0 Exit Function End Function
Todas las respuestas
-
-
-
Joan, yo hice una prueba en Windows 7 de un amigo y no hubo problema. Por qué no haces primero navegar una página (html, php, asp, aspx,etc) sin envío de data? y de esa manera vas descartando. Yo utilizé navigate.
Por otro lado, aqui envías por GET, no por POST; recuerda capturar las variables con querystring.
CJ
-
Este es el código que utilizo en unas pruebas que hice en Microsoft Access. El procedimiento de nombre sql es público, de manera que al actualizar datos en un form o procedimiento, actualizo la base de datos remota. Estoy apenas comenzando este proyecto (personal), por lo que no verás tratamiento de errores. ;)
En la página web (act.php), hay un formulario de nombre mifrm y un campo de nombre cadena. También hay un campo(cuantos) donde escribo la cantidad de registros afectados.
- En este form, coloqué un objeto Microsoft Web Browser de nombre ww. El formulario no es visible, por lo que se podría instanciar el control, pero para los efectos de prueba lo tengo de esta manera.
Private Sub Form_AfterUpdate()
If CurrentProject.AllForms("frmww").IsLoaded = True Then
cadena = "UPDATE contacto SET razonsocial='" & Me.razonsocial & "',rif='" & Me.rif _
& "',direccion='" & Me.direccion & "',email='" & Me.email & "',tlfs='" & Me.tlfs & "'"
Form_frmww.sql cadena
Else
MsgBox "El formulario de paso, está cerrado."
End If
End SubEste es el código del form (frmww) que contiene al componente:
Private Sub Form_Open(Cancel As Integer)
DoCmd.Maximize
ww.Navigate "http://localhost/condominios/act.php"
affecTed = 0
End Sub
Private Sub ww_DocumentComplete(ByVal pDisp As Object, URL As Variant)
On Error GoTo lbl_err
Do
DoEvents
If ww.Busy = False Then
DoCmd.Hourglass False
affecTed = ww.Document.getElementById("cuantos").Value
If affecTed = 0 Then
MsgBox "No se actualizó la base de datos remota."
Else
MsgBox "Proceso realizado"
End If
Exit Do
End If
Loop
lbl_exit:
Exit Sub
lbl_err:
Debug.Print Err.Description
End Sub
Public Sub sql(SQLstr)
On Error GoTo lbl_err
DoCmd.Hourglass True
With ww.Document.Forms("mifrm")
.Item("cadena").Value = SQLstr
.submit
End With
lbl_exit:
Exit Sub
lbl_err:
Debug.Print Err.Number & vbTab & Err.Description
Resume lbl_exit
End SubSi deseas, coloco aqui el codigo de act.php (solo 27 lineas y actualiza la base de datos remota)