PDA

Ver la Versión Completa : Cargar esta web en un Twebbrowser problemas user agent


cocute
15-10-2014, 10:36:33
Alguien me podría decir como cargar esta web en un Twebbrowser:
http://ivanrublev.me/kml/

He probado a cambiar el user agent con este ejemplo pero no me funciona:
http://theroadtodelphi.wordpress.com/2011/03/11/changing-the-ua-user-agent-of-a-twebbrowser-component/
Con este ejemplo descargable con ejecutable incluido podeis probar que no funciona la web:
http://dl.dropbox.com/u/12733424/Delphi/User%20Agent%20Switcher.rar

Lo curioso es que la web en el Internet Explorer 11 del windows8.1 x65 me carga,
en cambio al meterla en un Twebbrowser me pide que el navegador sea chrome o firefox.



gracias

PD: La opcion de usar los componentes de Tchromium no me interesa ya que tienen unos 50mb de dll que hay que añadir.

Neftali [Germán.Estévez]
15-10-2014, 12:59:45
Puedes probar esta opción (http://www.cadetill.com/cosas-del-twebbrowser/), aunque no se si funcionará, ya que en si, no es un comportamiento "extraño" o a modificar del componente, sino una decisión que está tomando la página, según la información que le llega.

AÑADO: Lo he probado y contradiciendome a mi mismo, he de decir que sí funciona.

http://s26.postimg.org/u4vyhx3m1/Captura_257.png

Los cambios:

http://s26.postimg.org/4am5s53m1/Captura_258.png

cocute
15-10-2014, 14:25:08
Muchas gracias, poniendo los datos a mano en el registro me funciona, pero la idea es que eso no lo tenga que hacer en cada ordenador que se ejecute,
ahora el problema es que no consigo meter la información al registro desde el propio programa,
he probado varios ejemplos pero en ningún caso me lo guarda en el registro, no se si es que windows8 teiene alguna restricción de permisos o algo,
por ejemplo esto no da error pero no me lo guarda en el registro

añadimos System.Win.Registry al uses



var
Reg: TRegistry;
Key: string;

begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
Key := 'SOFTWARE\Microsoft\InternetExplorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION';
if Reg.OpenKey(Key, True) then
begin
Reg.WriteInteger('miaplicacion.exe', 110010);
Reg.CloseKey;
end;
finally
Reg.Free
end;
end;



Luego aparte como deberia de meter el GetIEVersion de la función en vez de 110010?
ya que es un string y no puedo pasarlo a integer ya que no es un numero el resulado.


gracias

EDITADO: He añadido los TAG's (http://tinyurl.com/bvzsyhb) a la parte de código.

Neftali [Germán.Estévez]
15-10-2014, 15:47:40
La parte del Valor del registro (11001) no es la versión que tienes, sino la que quieres "emular".
Aquí en el MSDN (http://msdn.microsoft.com/en-us/library/ie/ee330730%28v=vs.85%29.aspx#browser_emulation) (el link está en el artículo original) tienes los diferentes valores que puedes usar ahí, según la versión.

El código lo veo bien y a mi me funciona. No creo que necesites permisos especiales pues estás escribiendo en tu rama del registro.
Hay un detalle que es que InternetExplorer lo has puesto junto y va separado. Cambiando eso a mi me escribe correctamente.

cocute
15-10-2014, 20:03:43
Es verdad, gracias de nuevo. Era el problema del espacio, se me había creado otra linea de registro.
lo que he puesto tambien en vez del nombre del del ejecutable es esto,
y de ese modo aunque cambie el nombre del ejecutable seguiría funcionando aunque ponga otra linea al registro.
ExtractFileName(Application.ExeName)

Ya aprovechando el hilo alguno sabéis si se puede simular el dragdrop de un fichero al TWebbrowser?
Como veis esa web que he incrustado acepta ficheros kml que le arrastras de cualquier lado.
Pero se podría que desde un filelist al hacer dobleclick en un fichero se simule el dragdrop hacia el tbrowser sin tener que arrastralo?
no se si es muy complicado lo que pretendo o es una chorradita pero no encuentro info al respecto, o no se bien como buscarla
(encontré algo simulando clicks del ratón, pero seguro que hay un modo más simple)

gracias.

Neftali [Germán.Estévez]
16-10-2014, 08:42:07
Ceeo que para esa nueva pregunta deberías crear un nuevo hilo con el título adecuado.

cocute
22-10-2014, 12:57:15
Otra duda que me surge con esta aplicación,
si tengo el programa abierto y me desconecto de internet, los KML me los sigue leyendo y los mapas siguen cargando
porque busca la información en la cache,

Pero está claro que si salgo del programa y vuelvo a entrar estando offline aunque cargase el html en local el invento ya no funciona,
he probado poniendo al webbrosser.offline true pero no va,
también he probado meter lo de cache.manifest en el index.html pero tampoco he conseguido nada.

cocute
02-11-2014, 17:35:21
Sobre esto último que preguntaba, creo que no es posible hacerlo,
alguien le ocurre lo mismo en este post, pero creo que googlemaps no lo permite
http://stackoverflow.com/questions/20771715/appcache-manifest-for-google-maps-nor-working

MAXIUM
02-11-2014, 17:57:19
Internet Explorer 11 se hace pasar por Firefox para que sea aceptado por algunas web.

Por otra parte, no puedes usar un agente si no lo tienes instalado previamente.

Hay un componente que te incrusta el navegado de Chomium dentro del exe.

En lo personal, la aplicación deberia detectar previamente el navegador que esta instalado y si no se encuentra el correspondiente, lanzar un aviso con el link de descarga.