hola @fastpho:
Felicitaciones, he probado el script que pasaste y quedo gratamente sorprendido, lo estoy corriendo desde un cliente 32 bits, como asi tambien desde un cliente 64 bits y tambien funciona, no entiendo como puede ser, se me quemaron los manuales, pero FUNCIONA y no deberiamos entonces preocuparnos por el entorno en que se desarrolle el servidorCOM.
Ademas lo he probado en windows 11 y anda perfectamente.
Creo que la magia esta en la configuracion del archivo spec, incorporando las librerias en el mismo, soluciona los problemas de empaquetado de pyinstaller, que no era suficiente con por ejemplo: pyinstaller --onefile --windowed --hidden-import=win32timezone elsisloc.py ya que cada error habia que incorporar las librerias que no detectaba el compilador, IMPECABLE LO TUYO y UN APORTE SIGNIFICATIVO.
Respecto del archivo de texto, hice una mala lectura, vi que guardaba la consulta en un archivo csv y asumi que luego lo leian y no era asi, lo genera, no se el objetivo pero la informacion es tomada del propio return.
Archivo generado al momento de la consulta.
1,"monumental, buenos aires, argentina",-34.5452932,-58.4497385,OK,2025-09-15 23:58:44
1,"bombonera, buenos aires, argentina",-34.6355171,-58.3649163,OK,2025-09-15 23:59:33
Veo que el tema ha tenido muchas lecturas, no veo reportes de si lo estan utilizando o solo leen los post, pero si quieren probar el servidorCOM generado y presentado gentilmente por @fastpho, le dejo un script en vbs para que puedan probar en forma rapida el mismo, y vean la magia de trabajar desde otro lenguaje y utilizar el mundo python:
abre navegador en la ubicacion especificada
64 bits
wscript.exe C:\PyPracticas\fastpro\ localizar_con_mapa.vbs
32 bits
C:\Windows\SysWOW64\wscript.exe C:\PyPracticas\fastpro\ localizar_con_mapa.vbs
Obs. cambiar la ubicacion del script.
Código VB:
' =================================================================
' servidorCOM autor: @fastpho:
' Script: localizar_con_mapa.vbs
' Propósito: Probar el objeto COM, geocodificar una dirección
' y abrir la ubicación resultante en un mapa.
' =================================================================
' --- 1. Declaración de variables ---
Dim objGeo, direccion, resultado, partesResultado
Dim estado, latitud, longitud, mensaje
Dim askToOpenMap, mapURL, shell
' --- 2. Solicitar dirección al usuario ---
direccion = InputBox("Introduce la direccion a geocodificar:", "Geolocalizacion")
If direccion = "" Then
MsgBox "No se ingreso ninguna direccion. El script finalizara.", vbExclamation, "Sin direccion"
WScript.Quit
End If
' --- 3. Creación del Objeto COM ---
On Error Resume Next
Set objGeo = CreateObject("LocPyCOM.elsCOMObject")
On Error GoTo 0
' --- 4. Verificación y uso del objeto ---
If objGeo Is Nothing Then
MsgBox "ERROR: No se pudo crear el objeto COM 'LocPyCOM.elsCOMObject'." & vbCrLf & vbCrLf & _
"Por favor, asegurate de haber registrado el servidor COM.", vbCritical, "Error de Objeto"
Else
' Llamamos al método para obtener las coordenadas
resultado = objGeo.CrearLocalizacion(direccion)
' Procesamos la respuesta que viene separada por "|"
partesResultado = Split(resultado, "|")
estado = partesResultado(0)
If UCase(estado) = "OK" Then
latitud = partesResultado(1)
longitud = partesResultado(2)
' Mostramos el mensaje con el resultado exitoso
mensaje = "Geocodificacion Exitosa" & vbCrLf & vbCrLf & _
"Latitud: " & latitud & vbCrLf & _
"Longitud: " & longitud
MsgBox mensaje, vbInformation, "Resultado"
' Preguntamos al usuario si desea abrir el mapa
askToOpenMap = MsgBox("¿Deseas abrir esta ubicacion en un mapa?", vbYesNo + vbQuestion, "Abrir Mapa")
If askToOpenMap = vbYes Then
' Construye una URL de Google Maps moderna y confiable
mapURL = "https://www.google.com/maps/search/?api=1&query=" & latitud & "," & longitud
' Abrimos la URL en el navegador por defecto
Set shell = CreateObject("WScript.Shell")
shell.Run mapURL
Set shell = Nothing
End If
Else
' Mostramos el mensaje de error devuelto por el objeto COM
mensaje = "La geocodificación fallo." & vbCrLf & vbCrLf & _
"Mensaje del servidor: " & partesResultado(1)
MsgBox mensaje, vbExclamation, "Resultado con Error"
End If
' Liberamos el objeto de la memoria
Set objGeo = Nothing
End If
Saludos cordiales
|
|