Lanzar app "Mapas" de Windows 10 desde VFP

308 views
Skip to first unread message

Juan Pablo Martín Peinado

unread,
Aug 23, 2016, 5:37:46 AM8/23/16
to Comunidad de Visual Foxpro en Español
Muy buenas,

Me gustaría saber si desde VFP, mediante programación, se pueden lanzar las aplicaciones propias de Windows 10, las llamadas aplicaciones universales. En concreto estoy interesado en poder lanzar la aplicación de Mapas.

Un saludo,

----------------------------------------
Juan Pablo Martín Peinado
Guadalajara - España
----------------------------------------

Juan Pablo Martín Peinado

unread,
Aug 23, 2016, 7:52:37 AM8/23/16
to Comunidad de Visual Foxpro en Español
La pregunta viene al caso porque he estado intentando automatizar los maps de Bing al igual que ya tengo hecho con los de Google. Creo un archivo HTML y lo muestro dentro de un formulario VFP mediante el control Shell.Explorer.2. El problema es que los HTML que genero para Bing Maps me dan error de Javascrip en el control Shell.Explorer. Sin embargo si genero estos archivos y los abro directamente desde cualquier navegador funciona bien.

No se si hay alguna alternativa al control o Shell.Explorer. Por eso he pensado que en vez de reinventar la rueda, quizás se podría utilizar la app Mapas que viene incluida en Windows 10. El problema es que no sé como lanzarla desde mi aplicación, mucho menos si se puede parametrizar para que me muestre un lugar en concreto.


----------------------------------------
Juan Pablo Martín Peinado
Guadalajara - España
----------------------------------------

Jose Antonio Blasco

unread,
Aug 23, 2016, 8:12:15 AM8/23/16
to Comunidad de Visual Foxpro en Español
Hola Juan Pablo,
Prueba a utilizar estas líneas:

            qFile=createobject('WScript.Shell')
            qFile.run(cFile,2,.t.)

donde "cFile" contenga el nombre y la ruta de tu archivo html.

Debería abrirse con el explorador predeterminado.   Evidentemente, para solucionar tu problema no debería ser IE.

Un saludo.



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

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Juan Pablo Martín Peinado

unread,
Aug 23, 2016, 9:52:01 AM8/23/16
to Comunidad de Visual Foxpro en Español
Gracias por responder Jose. Eso ya lo he probado y funciona bien. Es más, funciona incluso con IE, pero no con un control Shell.Explorer dentro de un formulario VFP.


--------------------------------------
Juan Pablo Martín Peinado
Guadalajara - España
--------------------------------------

Jose Antonio Blasco

unread,
Aug 24, 2016, 2:17:57 AM8/24/16
to Comunidad de Visual Foxpro en Español
Yo tambien he tenido desde hace unas semanas problemas con la visualización de mapas en un formulario.  Es algo que tenía incluido en los programas desde hace años y dejo de funcionar hace poco.  Me pasaba como a tí, si tomaba el html creado y lo ejecutaba se visualizaba sin problemas. 

Tras mucho probar, el problema venía con el tamaño que asigno dentro del html al objeto que mostrará el mapa.  Le tuve que dar unas dimensiones máximas de 768 de width por 500 de height.   Esto me llevo a incluir en mi formulario un botón que, con las intrucciones que te indiqué ayer, pueda mostrar tambien, el mapa a pantalla completa, ya que en ésta nueva opción, en el html uso valores para width y height en %.

Un saludo.


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

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Juan Pablo Martín Peinado

unread,
Aug 24, 2016, 3:24:43 AM8/24/16
to Comunidad de Visual Foxpro en Español
He probado a reducir las dimensiones y me sigue dando error. Sin embargo con Google Maps no da ningún problema.

Ahora mismo no es algo que me corra prisa, lo tengo solucionado con Google Maps o con Bing (abriendo en el navegador), pero tengo curiosidad por saber si se puede hacer, tanto esto como lo que planteaba al abrir el hilo de interactuar con la aplicación Mapas de Windows 10.

Voy a copiar aquí como estoy creando el HTML en cuestión por si alguien lo quiere probar. Basicamente es un copia/pega de un ejemplo de la web de Microsoft:

LOCAL lcCadena

lcCadena = "C/Mayor, 19002, Guadalajara"

TEXT TO lcHtml NOSHOW TEXTMERGE
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <!-- Reference to the Bing Maps SDK -->
    <script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?callback=GetMap' async defer></script>
   
    <script type='text/javascript'>
    var map, searchManager;
    function GetMap()
    {
        map = new Microsoft.Maps.Map('#myMap', {credentials: 'aquí va la clave proporcionada por Microsoft'});
        geocodeQuery("<<lcCadena>>");
    }

    function geocodeQuery(query) {
        //If search manager is not defined, load the search module.
        if (!searchManager) {
            //Create an instance of the search manager and call the geocodeQuery function again.
            Microsoft.Maps.loadModule('Microsoft.Maps.Search', function () {
                searchManager = new Microsoft.Maps.Search.SearchManager(map);
                geocodeQuery(query);
            });
        } else {
            var searchRequest = {
                where: query,
                callback: function (r) {
                    //Add the first result to the map and zoom into it.
                    if (r && r.results && r.results.length > 0) {
                        var pin = new Microsoft.Maps.Pushpin(r.results[0].location);
                        map.entities.push(pin);
                        map.setView({ bounds: r.results[0].bestView });
                    }
                },
                errorCallback: function (e) {
                    //If there is an error, alert the user about it.
                    alert("No se han encontrado resultados.");
                }
            };

            //Make the geocode request.
            searchManager.geocode(searchRequest);
        }
    }

    </script>
</head>
<body>
    <div id="myMap" style="width:100%; height:100%"></div>
</body>
</html>
ENDTEXT

STRTOFILE(lcHtml,"MiMapaBing.htm")
this.oleIE.Navigate(FULLPATH("MiMapaBing.htm"))
this.oleIE.SetFocus()



----------------------------------------
Juan Pablo Martín Peinado
Guadalajara - España
----------------------------------------

Jose Antonio Blasco

unread,
Aug 24, 2016, 5:44:28 AM8/24/16
to Comunidad de Visual Foxpro en Español
¿Estas líneas son las que has cambiado para probar a reducir las dimensiones?


<body>
    <div id="myMap" style="width:100%; height:100%"></div>
</body>

Porque es ahí donde yo tuve que poner:

<body>
    <div id="myMap" style="width: 768px; height: 500px;"></div>
</body>

Un saludo.


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

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Juan Pablo Martín Peinado

unread,
Aug 24, 2016, 5:57:53 AM8/24/16
to Comunidad de Visual Foxpro en Español
Efectivamente, cambié esa línea pero me sigue dando error en el script cuando lo ejecuto en el control Shell.Explorer. Sin embargo con Google Maps me funciona bien poniendo las dimensiones al 100%.

-----------------------------------------
Juan Pablo Martín Peinado
Guadalajaa - España
-----------------------------------------

Juan Pablo Martín Peinado

unread,
Aug 24, 2016, 6:07:14 AM8/24/16
to Comunidad de Visual Foxpro en Español
Una alternativa que si me funciona es en lugar de utilizar la API de Bing, pasar directamente una URL, aunque con esto se pierde control:

LOCAL lcCadena
lcCadena = "http://bing.com/maps/default.aspx?" + "where1=" + "C/Mayor, 19001, Guadalajara, España" + "&style=h"
this.oleIE.Navigate(lcCadena)


----------------------------------------
Juan Pablo Martín Peinado
Guadalajara - España
----------------------------------------

Juan Pablo Martín Peinado

unread,
Sep 26, 2016, 8:00:35 AM9/26/16
to Comunidad de Visual Foxpro en Español
Por fin he encontrado como lanzar la aplicación de Mapas que viene en Windows 10 mediante programación. No solo eso, sino que además le puedo pasar parámetros para que se me abra mostrando un lugar determinado, Ej.:

LOCAL lcAplicacion

lcAplicacion = "bingmaps://" + "?where=C/Mayor, Guadalajara"

DECLARE INTEGER ShellExecute IN SHELL32.DLL INTEGER nWinHandle, STRING cOperation, STRING cFileName, STRING cParameters, STRING cDirectory, INTEGER nShowWindow
ShellExecute(0, "Open", lcAplicacion, "", "", 1)

-----------------------------------------

Juan Pablo Martín Peinado
Guadalajara - España
-----------------------------------------




El martes, 23 de agosto de 2016, 11:37:46 (UTC+2), Juan Pablo Martín Peinado escribió:
Reply all
Reply to author
Forward
0 new messages