version de IE en oActivex:Do(Navigate)

version de IE en oActivex:Do(Navigate)

Postby postinelli » Thu May 05, 2016 6:35 pm

Buenas Tardes

tengo el siguiente tema

desde el programa ingreso a distintas paginas con la siguiente funcion

////////////
Function VerURL(cLink)

Local oActiveX


If IsInternet()

DEFINE DIALOG oDlg RESOURCE "CONSULTA_WEB_3" TITLE "Ver URL"

REDEFINE ACTIVEX oActiveX ID 10 OF oDlg PROGID "Shell.Explorer"
REDEFINE BUTTON ID 110 OF oDlg ACTION oDlg:end()

ACTIVATE DIALOG oDlg CENTERED ON INIT oActiveX:Do( "Navigate2", cLink )

EndIf

Return NIL
/////////////////

ahora bien el tema es que algunos sitios donde navego chequea la version del navegador que se utiliza

si bien tengo instalado el IE11 ( tambien probé con IE9, IE8, Chrome, Safari ) siempre me da el mismo UserAgent

User-Agent = Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)

imagino que el Activex que utiliza el FWH es MSIE 7.0, esto es asi? o de donde toma esta informacion?
es posible cambiar y/o actualizar esto?

desde ya gracias por su atencion
postinelli
 
Posts: 149
Joined: Tue Jul 15, 2008 7:12 pm
Location: Argentina

Re: version de IE en oActivex:Do(Navigate)

Postby karinha » Thu May 05, 2016 7:20 pm

Teste asi:

Code: Select all  Expand view

#include "FiveWin.ch"

STATIC oWnd

FUNCTION Main()

   LOCAL oActivex, mSearch

   mSearch := "SAO PAULO - BRASIL"

   DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support - Via Google Maps"

   oActiveX = TActiveX():New( oWnd, "Shell.Explorer" )

   oActivex:Silent := .T.

   oActivex:SetFocus()

   oWnd:oClient = oActiveX // To fill the entire window surface

   oActiveX:Navigate( "www.google.com.br/maps/place/ " + ALLTRIM(mSearch)  )

   ACTIVATE WINDOW oWnd MAXIMIZED

RETURN NIL
 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7800
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: version de IE en oActivex:Do(Navigate)

Postby karinha » Thu May 05, 2016 7:21 pm

oActiveX:Navigate( "www.google.com.br/maps/place/ " + ALLTRIM(mSearch) )
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7800
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: version de IE en oActivex:Do(Navigate)

Postby postinelli » Fri May 06, 2016 12:01 pm

funciona exacto a mi código

si veo el User-Agent siempre devuelve

User-Agent = Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)

cuando en realidad NO se esta usando el MSIE 7.0, sino el MSIE 11.0

probado en distintas PCs, con distintas versiones de Windows ( XP, W7, W10 )
con todos los Navegadores, siempre devuelve MSIE 7.0

yo imagino que es algo interno del FWH
postinelli
 
Posts: 149
Joined: Tue Jul 15, 2008 7:12 pm
Location: Argentina

Re: version de IE en oActivex:Do(Navigate)

Postby Antonio Linares » Fri May 06, 2016 6:19 pm

Se instancia un objeto "Shell.Explorer", eso es todo

Depende de la configuración que tenga en cada versión de Windows supongo
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42073
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: version de IE en oActivex:Do(Navigate)

Postby sjingo » Mon Jun 06, 2016 7:32 pm

Saludos

Perdón que "meta la cuchara".

Debido a que estoy haciendo algunos cambios en uso de un visor para los mapas, específicamente estoy cambiando a usar de googlemaps a openlayers, me encontré con problemas relacionados a este tema. Sucede que mientras buscaba solución a mi problema de "error en el script de esta página" y no cargaba la librería openlayers; me encontré con este post que habla de los user-agent, y que dio el camino a la solución.

Buscando sobre esto en google, encontré que efectivamente, cuando se llama a IE desde un activeX, por defecto se carga con IE 7, el cual no soporta muchas características de HTML5 y CSS3. Así que la solución es registrar nuestra aplicación en el registro de Windows. En mi caso se solucionó ingresando en la siguiente clave:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

Aquí se crea un nuevo -> valor de DWORD(32 bits), colocando el nombre de nuestra aplicación.exe
Luego le asignamos el valor decimal 11001
Esto hace que en el activeX else inicie por defecto el IE11, y allí si se cargo correctamente mi visor. y si se revisa el user-agent, ya hace referencia a que está cargado IE11.

Este es el enlace que tiene toda la información.
http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version#RenderingChallenged

Gracias
Marcelo Jingo
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Re: version de IE en oActivex:Do(Navigate)

Postby Antonio Linares » Tue Jun 07, 2016 6:34 am

Marcelo,

gracias, muy interesante :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42073
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Garbi, Google [Bot] and 51 guests