Navegador y la comunicación aplicación externa? (Url de Chrome actual y de referencia en Windows?)
-
19-09-2019 - |
Pregunta
¿Cómo podría un programa externo comunicarse con un navegador? Esperamos que esto sea de alguna utilidad a los demás: estoy a listar una serie de opciones que he visto o intentado, sin éxito, mientras que conseguir que esto funcione. Si usted sabe de otros, por favor publicarlos.
- Si Mac, utilizar AppleScript (info / solución a q.263741 , intente esta búsqueda )
- Uso o crear una extensión para Firefox ( iMacros ?, q.410411 ), cromo (?)
- Utilizar un WebBrowser control para alojar una instancia IE (algunos consejos al q.1143187 )
- Si es el propietario del sitio, esto se puede hacer con un script ajax fondo
Mi pregunta: ¿cómo puedo obtener la corriente de navegador de primer plano (Chrome, específcamente) URL de referencia y de una aplicación externa ventanas, sin modificar el navegador
?He intentado usar GetWindowText de User32, que agarra el título (usando jNative para Java). A menudo, esto permite que adivine el servidor. Puede que sea posible escribir un proxy local que va a asignar títulos a las direcciones URL, pero esto es mucho trabajo. He escrito una extensión de Firefox para manipular el título de la ventana con esta información, pero se convirtió en obsoleta, y necesito esto para Chrome ahora de todos modos. Yo prefiero no añadir chatarra al navegador, a menos ampliamente útil. Tal vez podría presentar una solicitud de función para una API applescript como para Chrome en Windows. AHK ventana de información 1.7 logra agarrar la URL (pero no de referencia) bajo visible / oculta texto, pero no tengo idea de cómo portar el código que utiliza.
(Algo de información para FF / C # en q.990409 y aquí , algo de información IE en q.823755 (redirige a q.352236 ) No hay información sobre la dirección q.1107978. No haga caso de esto: preguntas relacionadas: ¿Cómo se controla el Firefox con una macro? ¿Cómo puedo obtener información del navegador? ¿Cómo puedo obtener la URL del navegador actual? ¿Cómo puedo obtener la URL actual de cromo desde una aplicación externa? )
Las ideas, ejemplos de código, los punteros a cuestiones potencialmente relevantes, y respuestas a mi pregunta específica están apreciados.
Solución
solución rápida y sucia (se puede convertir de Delphi a su idioma):
var
h : HWND;
pCh : array [0..255] of char;
begin
Result := '';
h := GetForegroundWindow; // or pass main Chrome window here
if h = 0 then exit;
h := GetWindow(h,GW_CHILD);
if h = 0 then exit;
h := GetWindow(h,GW_HWNDNEXT);
if h = 0 then exit;
SendMessage(h, WM_GETTEXT, SizeOf(pCh), integer(@pCh)) ;
Result := pCh; // <-- URL is here!
end;
Gracias por la pregunta;) - acaba de agregar a nuestra WorkTime - tiempo de software de seguimiento