sesion pestañas paginas guardar google extension exportar conjunto como chrome c# sharepoint url

c# - pestañas - ¿Cómo obtengo las URL de cualquier pestaña en cualquier navegador abierto?



guardar un conjunto de pestañas (4)

Es poco probable que encuentres esa respuesta. Todos los navegadores modernos restringen la capacidad de JavaScript en una página para acceder a dicha información, ya que representa un gran riesgo de privacidad para el usuario.

Estoy tratando de detectar qué web en sharepoint está mirando el usuario en este momento. Un enfoque podría ser leer los URL del navegador e intentar compararlos con una URL de referencia para la solución de SharePoint. Todavía no he podido encontrar ninguna solución que funcione tanto en IE como en Firefox.

La idea es escribir una pequeña aplicación de C # que recolecte las URL y haga la comparación.

TIA


Es posible hacer esto de una manera muy hacky y propenso a la rotura utilizando la función API de Win32 FindWindow.

El siguiente ejemplo de C ++ que encuentra una instancia en ejecución de la Calculadora de Windows y obtiene el valor del campo de edición en ella. Debería poder hacer algo similar en C #. Descargo de responsabilidad: en realidad no he comprobado para asegurarse de que este código se compila, lo siento. :)

float GetCalcResult(void) { float retval = 0.0f; HWND calc= FindWindow("SciCalc", "Calculator"); if (calc == NULL) { calc= FindWindow("Calc", "Calculator"); } if (calc == NULL) { MessageBox(NULL, "calculator not found", "Error", MB_OK); return 0.0f; } HWND calcEdit = FindWindowEx(calc, 0, "Edit", NULL); if (calcEdit == NULL) { MessageBox(NULL, "error finding calc edit box", "Error", MB_OK); return 0.0f; } long len = SendMessage(calcEdit, WM_GETTEXTLENGTH, 0, 0) + 1; char* temp = (char*) malloc(len); SendMessage(calcEdit, WM_GETTEXT, len, (LPARAM) temp); retval = atof(temp); free(temp); return retval; }

Para encontrar los parámetros correctos para usar en FindWindow y FindWindowEx, use la herramienta de Visual Studio Spy ++ para inspeccionar una instancia en ejecución de la ventana de su navegador. Lo siento, no tengo un ejemplo de código para navegadores web disponibles, pero debería ser posible. Tenga en cuenta que su solución será específica del sistema operativo Windows, y también los cambios en la arquitectura de la interfaz de usuario en futuras versiones de los navegadores web podrían hacer que su solución deje de funcionar.

Usar este método para levantar la URL directamente de la barra de direcciones obviamente solo funciona para la pestaña actual. No puedo ver cómo funcionaría esto para todas las pestañas a menos que hicieras algo realmente complicado como simular la entrada del usuario para recorrer las pestañas. Eso sería muy intrusivo y un usuario podría fácilmente estropear su aplicación al interrumpirla con su propia entrada, pero podría funcionar si está escribiendo algo que se ejecuta sin supervisión, como un script de prueba automatizado. Si ese es el caso, es posible que desee buscar otras herramientas como AutoIt .

Este consejo está parafraseado de una publicación de blog que una vez escribí. ¡Buena suerte!


Justo fuera de mi cabeza, podrías considerar usar el lenguaje Firefox incorporado (no tengo idea de cómo se llama). Estoy seguro de que proporciona un mecanismo para hacer exactamente lo que estás hablando. De lo contrario, esos complementos escritos para delicioso, etc., no funcionarían.

En cuanto a IE, vas a tener que hacerlo en C ++ o encontrar un contenedor administrado para esto. No estoy seguro de cómo hacer un complemento de IE, pero si profundizas lo suficiente, deberías poder encontrar algo.

¡Aclamaciones!


Es bastante fácil en IE usando el objeto de aplicación shell de ActiveX en Javascript. A continuación se muestra el código de muestra:

function GetURL() { var oShell = new ActiveXObject(''shell.application''); var oColl = oShell.Windows(); for (var i = 0;i<oColl.count;i++) { try { var Title = oColl(i).document.title; if (Title.indexOf(''DesiredTitle'') != -1) { alert (''Title-''+oColl(i).document.title); alert (''Location-''+oColl(i).location); } } catch (err) { alert (err); } } }

Todavía estoy tratando de encontrar un camino en Firefox.