我正在尝试检测用户正在查看的sharepoint中的哪个网站。一种方法是从浏览器中读取URls并尝试将它们与sharepoint解决方案的参考URL进行比较。我还没有找到任何适用于IE和Firefox的解决方案。

我们的想法是编写一个小型C#应用程序来收集URL并进行比较。

TIA

有帮助吗?

解决方案

可以使用Win32 API函数FindWindow以非常容易破解的方式执行此操作。

以下C ++示例,它查找Windows Calculator的运行实例并获取其中的edit字段的值。你应该可以在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中使用的正确参数,请使用Visual Studio工具Spy ++检查浏览器窗口的运行实例。对不起,我手边没有Web浏览器的代码示例,但应该可以。请注意,您的解决方案将特定于Windows操作系统,并且在未来版本的Web浏览器中更改UI体系结构可能会导致您的解决方案停止工作。

使用此方法将URL从地址栏中提取出来显然只适用于当前选项卡。我无法看到这对所有选项卡有什么用,除非你做了一些非常棘手的事情,比如模拟用户输入来循环选项卡。这将是非常具有侵入性的,并且用户可以通过使用自己的输入中断它来轻松搞乱您的应用程序,但是如果您正在编写无人值守的内容(如自动测试脚本),它可能会起作用。如果是这种情况,您可能需要查看其他工具,例如 AutoIt

这个建议都是从我曾经写过的博客文章中解释的。 。祝你好运!

其他提示

在IE中使用Javascript中的ActiveX shell应用程序对象相当容易。以下是示例代码:

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中找到一种方法。

你不太可能找到这样的答案。所有现代浏览器都限制JavaScript在页面上访问此类信息的能力,因为它会给用户带来如此大的隐私风险。

在我的脑海中,你可能会考虑使用内置的Firefox语言(不知道它叫什么)。我敢肯定它提供了一种机制来完全按照你所说的做。否则那些为美味等而写的插件将无效。

对于IE,您需要在C ++中执行此操作,或者为此找到一些托管包装器。我不确定如何制作IE插件,但如果你深入挖掘,你应该能找到一些东西。

干杯!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top