Alternativa a shell.explorer2

790 views
Skip to first unread message

Jorgito P

unread,
Sep 27, 2017, 3:42:33 AM9/27/17
to Comunidad de Visual Foxpro en Español
Tengo un objeto creado con SHELL.EXPLORER2 para presentar un mapa con la API de JavaScript de Goggle Maps, pero cuando presenta dicho mapa, me da el aviso siguiente:
- Estás usando un navegador que no es compatible con la API de JavaScript de Google Maps.

¿ Hay algún componente en Visual Foxpro 9 para encapsular otro navegador ?

Gracias
Error_navegador.jpg

Jose Antonio Blasco

unread,
Sep 27, 2017, 6:53:20 AM9/27/17
to Comunidad de Visual Foxpro en Español
Jorgito, yo tengo esto en el momento de mostrar el mapa en el objeto

Thisform.oleIE.Silent = .T.          && evita que se muestren los mensajes de error
Thisform.oleIE.Navigate2(Fullpath("MiHtml.htm"))     && "MiHtml.htm" es el mapa que genero.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

Jorgito P

unread,
Sep 27, 2017, 12:49:14 PM9/27/17
to Comunidad de Visual Foxpro en Español
Hola:
Acabo de hacer lo que me dices y el código es el siguiente:
 
  Parm02 = "C:\mapa.htm"
   WITH thisform
       .AddObject( "oIEScreen", "cntOIE" ) 
       .oIEScreen.height = 700
       .oIEScreen.Width = 1200
       .oIEScreen.Visible = .T.
       .oIEScreen.oIE.Silent = .T.
       .oIEScreen.oIE.Navigate2(Fullpath(parm02))
   ENDWITH
 
Sigue dándome el error en la parte superior del mapa.

Jose Antonio Blasco

unread,
Sep 27, 2017, 1:29:09 PM9/27/17
to Comunidad de Visual Foxpro en Español
Si el archivo "C:\mapa.htm" lo ejecutas desde el explorador de archivso se muestra bien ?

Si no es así, estará mal generado.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2


Jorgito P

unread,
Sep 27, 2017, 1:58:01 PM9/27/17
to Comunidad de Visual Foxpro en Español
Adjunto el fichero a visualizar para que le eches una ojeada.

Un saludo
htm_20170927_195200.htm

José Enrique Llopis

unread,
Sep 27, 2017, 8:13:45 PM9/27/17
to publice...@googlegroups.com
Solo un detalle, Internet Explorer al instanciarlo siempre se comporta como Internet Explorer 7, sea la versión que sea, y eso hace que de error en, por ejemplo, Windows 10.
 
Mira este artículo, es muy interesante y lo explica muy bien:
 
 
José Enrique Llopis
 
 


De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Jorgito P
Enviado el: miércoles, 27 de septiembre de 2017 19:58
Para: Comunidad de Visual Foxpro en Español
Asunto: Re: [vfp] Alternativa a shell.explorer2

Jose Antonio Blasco

unread,
Sep 28, 2017, 3:41:55 AM9/28/17
to Comunidad de Visual Foxpro en Español
Vaya,   muy interesante el tema de las versiones de IE.

Voy a revisarlo yo tambien.

Jorgito, el mapa se ve bien si lo ejecutas directamente.  Como dice el artículo que enlaza Jose Enrique, si lo haces desde VFP, aparece un mensaje de "Navegador no compatible con la API".

Revisa el artículo.

Un saludo.


Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2


El 28 de septiembre de 2017, 2:13, José Enrique Llopis <fut...@lobocom.es> escribió:
Solo un detalle, Internet Explorer al instanciarlo siempre se comporta como Internet Explorer 7, sea la versión que sea, y eso hace que de error en, por ejemplo, Windows 10.
 
Mira este artículo, es muy interesante y lo explica muy bien:
 
 
José Enrique Llopis
 
 


Enviado el: miércoles, 27 de septiembre de 2017 19:58
Para: Comunidad de Visual Foxpro en Español
Asunto: Re: [vfp] Alternativa a shell.explorer2

José Enrique Llopis

unread,
Sep 28, 2017, 4:37:47 AM9/28/17
to publice...@googlegroups.com
Yo hago lo siguiente:
 
  • Verifico la versión del Internet Explorer
  • Verifico que estén las claves del registro que permiten a la aplicación ejecutar explorer en el modo correcto
  • Si no están, las creo.
La cosa es quie debe haber una clave, se indica en el artículo, en donde está el nombre de tu ejecutable p.ej. PEPITO.EXE y la versión de IE que va a emular, que debería ser la que está instalada.
 
Por cierto menos de la 11 ya no funciona en Google Maps, desde hace cosa de un mes más o menos, así que en XP se ha acabado usarlo.
 
 
 
 
 
 


De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Jose Antonio Blasco
Enviado el: jueves, 28 de septiembre de 2017 9:42

Para: Comunidad de Visual Foxpro en Español
Asunto: Re: [vfp] Alternativa a shell.explorer2

José Enrique Llopis

unread,
Sep 28, 2017, 5:11:19 AM9/28/17
to publice...@googlegroups.com
El código, las funciones para leer y escribir el registro se pueden encontrar fácilmente en internet, un abrazo desde Tokyo
 
 
 
 
**********************************************************************************************************************
*** Verifica que esté correctamente ajustado el parámetro browser emulation del explorador
*** y si no lo está, lo establece a su valor correcto, dependiendo de la versión de IE instalada
*** Basado en el artículo de rick Strahl:
*** http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version
**********************************************************************************************************************
FUNCTION _FFWK_VerifyBrowserEmulation
 
 lcRegistryPath = "Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION"
 

 loControlRegistry1 = CREATEOBJECT("ControlRegistry")
 
 lnBrowserEmulation = ;
  loControlRegistry1.ReadRegistryInt( HKEY_CURRENT_USER,lcRegistryPath,"MIPROGRAMA.exe")
 
 lnBrowserEmulation = NVL( lnBrowserEmulation, 0 )
 
 IF EMPTY( lnBrowserEmulation )
  *** Primero detecta la versión instalada de Internet Explorer
  lnExplorerVersion =  _FFWK_GetExplorerVersion()
  
  IF lnExplorerVersion < 7
   _FFWK_AVISO("ERROR: La versión de Internet Explorer instalada en su PC no está soportada por el programa", 46 )
  ENDIF
  
  DO CASE
   CASE lnExplorerVersion = 7
    lnBrowserEmulation = 7000
 
   CASE lnExplorerVersion = 8
    lnBrowserEmulation = 8000
 
   CASE lnExplorerVersion = 9
    lnBrowserEmulation = 9000
 
   CASE lnExplorerVersion = 10
    lnBrowserEmulation = 10000
 
   CASE lnExplorerVersion = 11
    lnBrowserEmulation = 11000
 
   OTHERWISE
    IF lnExplorerVersion > 11
     lnBrowserEmulation = 11000
    ELSE
     lnBrowserEmulation = 8000
    ENDIF
    
  ENDCASE
 
  loControlRegistry1.WriteRegistryInt(HKEY_CURRENT_USER,  lcRegistryPath, "multilink.exe", lnBrowserEmulation, .T.)
 
 ENDIF
 
 RETURN
 
ENDFUNC
 
 
 
NOTA:
 
_FFWK_AVISO  es un messagebox, más o menos, lleva un número porque tengo todos los mensajes en tablas para mostrarlos en diferentes idiomas fácilmente.
 
 

*****************************************************************************

*** Devuelve la versión de Internet Explorer instalada

*** Basado en el ejemplo de News2News:

***

http://www.news2news.com/vfp/?example=142&function=657

*****************************************************************************

FUNCTION

_FFWK_GetExplorerVersion

LOCAL lcVersionString, lcVersionString2

m.lcVersionString = _FFWK_GetIEValues("Version")

m.lcVersionString2 = _FFWK_GetIEValues("SvcVersion")

IF NOT EMPTY(lcVersionString2)

lcVersionString = lcVersionString2

ENDIF

IF EMPTY

( lcVersionString )

RETURN 0

ENDIF

lnPosicion = ATC( ".",lcVersionString)

IF lnPosicion <= 0

RETURN 0

ENDIF

lcVersionString = LEFT( lcVersionString, lnPosicion - 1 )

RETURN INT(VAL( lcVersionString ))

ENDFUNC

 

 

***********************************************************************

*** Consigue la versión de Internet Explorer y el UserAgent

*** ? "Version: ", _FFWK_GetHKLM("Version")

*** ? "Build: ", _FFWK_GetHKLM("Build")

***********************************************************************

FUNCTION

_FFWK_GetIEValues(lcValue) && reading LOCAL_MACHINE registry data

DECLARE INTEGER RegOpenKeyEx IN advapi32;

INTEGER hKey, STRING lpSubKey, INTEGER ulOptions,;

INTEGER samDesired, INTEGER @phkResult

DECLARE INTEGER RegQueryValueEx IN advapi32;

INTEGER hKey, STRING lpValueName, INTEGER lpReserved,;

INTEGER @lpType, STRING @lpData, INTEGER @lpcbData

DECLARE INTEGER RegCloseKey IN advapi32 INTEGER hKey

 

*!* #DEFINE HKEY_LOCAL_MACHINE 0x80000002

#DEFINE ccKey "Software\Microsoft\Internet Explorer"

#

DEFINE ERROR_SUCCESS 0

#

DEFINE KEY_READ 131097

 

LOCAL hKey, lcData, lnSize, lcResult

hKey = 0

 

* opening specified key

IF RegOpenKeyEx(HKEY_LOCAL_MACHINE, ccKey, 0, KEY_READ, @hKey) <> ERROR_SUCCESS

RETURN "#error#"

ENDIF

lnSize = 250

lcData =

SPACE(lnSize)

* quering the value name

IF RegQueryValueEx(hKey, lcValue, 0,0, @lcData, @lnSize) = ERROR_SUCCESS

lcResult =

Left(lcData, lnSize-1)

ELSE

lcResult = "#not found#"

ENDIF

= RegCloseKey (hKey) && releasing key handle

RETURN lcResult

ENDFUNC



De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de José Enrique Llopis
Enviado el: jueves, 28 de septiembre de 2017 10:38
Para: publice...@googlegroups.com
Asunto: RE: [vfp] Alternativa a shell.explorer2

Jorgito P

unread,
Sep 28, 2017, 7:31:20 AM9/28/17
to Comunidad de Visual Foxpro en Español

Hola a todos:Al final lo he solucionado creando en el registro del sistema un nuevo valor en:
 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
 
con el nombre del programa y con el valor decimal 11000 para la versión de Internet Explorer 11.0.9600

Gracias por vuestra ayuda.

erasmo cano diaz

unread,
Nov 8, 2020, 2:32:02 AM11/8/20
to Comunidad de Visual Foxpro en Español
FUNCIONO ESTimado jorgito .... era crear ese registro 
28 sept. 2017 8:31:20
a Comunidad de Visual Foxpro en Español

Hola a todos:Al final lo he solucionado creando en el registro del sistema un nuevo valor en:
 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
 
con el nombre del programa y con el valor decimal 11000 para la versión de Internet Explorer 11.0.9600

con tanto probar resulto... muchas gracias.. 
ya me estaba volviendo loco de como hacerlo ... 


Reply all
Reply to author
Forward
0 new messages