Как получить URL-адреса из любой вкладки в любом открытом браузере - PullRequest
2 голосов
/ 16 октября 2008

Я пытаюсь определить, в какой сети на sharepoint смотрит пользователь. Одним из подходов может быть чтение URls из браузера и попытка сравнить их со ссылочным URL-адресом для решения sharepoint. Я пока не смог найти решение, которое работает как в IE, так и в Firefox.

Идея состоит в том, чтобы написать небольшое приложение на C #, которое будет собирать URL-адреса и сравнивать их.

ТИА

Ответы [ 4 ]

2 голосов
/ 29 октября 2012

Это довольно легко в IE, используя объект приложения оболочки ActiveX в Javascript. Ниже приведен пример кода:

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);
  }
 }
}

Я все еще пытаюсь найти выход в Firefox.

2 голосов
/ 16 октября 2008

Это можно сделать очень хакерским способом, склонным к поломке, используя функцию WinW API API FindWindow.

Следующий пример C ++, который находит работающий экземпляр Windows Calculator и получает в нем значение поля редактирования. Вы должны быть в состоянии сделать что-то подобное в C #. Отказ от ответственности: я на самом деле не проверил, чтобы убедиться, что этот код компилируется, извините. :)

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;
}

Чтобы найти правильные параметры для использования в FindWindow и FindWindowEx, используйте инструмент Spy ++ для Visual Studio, чтобы проверить работающий экземпляр окна браузера. Извините, у меня нет примера кода для веб-браузеров под рукой, но это должно быть возможно. Обратите внимание, что ваше решение будет зависеть от ОС Windows, а также изменения в архитектуре пользовательского интерфейса в будущих версиях веб-браузеров могут привести к прекращению работы вашего решения.

Использование этого метода для поднятия URL-адреса прямо из адресной строки, очевидно, работает только для текущей вкладки. Я не могу понять, как это будет работать для всех вкладок, если вы не сделали что-то действительно сложное, например, имитация пользовательского ввода для циклического переключения между вкладками. Это было бы очень навязчиво, и пользователь мог бы легко испортить ваше приложение, прерывая его собственным вводом, но это может сработать, если вы пишете что-то, что выполняется без присмотра, например, сценарий автоматического тестирования. Если это так, вы можете посмотреть другие инструменты, такие как AutoIt .

Этот совет перефразирован из сообщения в блоге Я однажды написал. Удачи!

1 голос
/ 16 октября 2008

Вы вряд ли найдете такой ответ. Все современные браузеры ограничивают возможности JavaScript на странице для доступа к такой информации, так как это представляет такой большой риск для конфиденциальности пользователя.

0 голосов
/ 20 октября 2008

Вдобавок ко всему, вы можете подумать об использовании встроенного языка Firefox (понятия не имею, как он называется). Я уверен, что это обеспечивает механизм, чтобы точно делать то, о чем вы говорите. В противном случае эти плагины, написанные для вкусных и т. Д., Не сработают.

Что касается IE, вам нужно либо сделать это в C ++, либо найти для этого управляемую оболочку. Я не уверен, как сделать плагин для IE, но если вы копаете достаточно глубоко, вы сможете найти что-то.

Ура! * * 1005

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...