• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何从任何打开的浏览器中的任何选项卡获取URL

c/c++ 来源:Kasper 3次浏览

我正在尝试检测用户正在查看的SharePoint中的哪个网页。一种方法可能是从浏览器读取URls,并尝试将它们与参考网址比较以获取Sharepoint解决方案。我还没有找到可以在IE和Firefox中使用的解决方案。如何从任何打开的浏览器中的任何选项卡获取URL

这个想法是编写一个小的C#应用​​程序,将收获的URL和做比较。

TIA


===========解决方案如下:

有可能在一个非常哈克而且容易做到这一点使用Win32 API函数FindWindow函数破损的方式。

以下C++的例子,发现窗口计算器的运行实例,并得到在它的编辑字段的值。你应该可以在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工具间谍++检查你的浏览器窗口的运行实例。对不起,我手边没有网页浏览器的代码示例,但应该可以。请注意,您的解决方案将特定于Windows操作系统,并且在未来版本的Web浏览器中更改UI架构可能会导致您的解决方案停止工作。

使用此方法从地址栏中提取URL显然只适用于当前选项卡。我看不出这对所有选项卡都有效,除非您做了一些非常棘手的问题,例如模拟用户输入来循环显示选项卡。这会非常干扰用户,通过用自己的输入来中断应用程序,用户可以轻松搞定你的应用程序,但是如果你正在编写一些无人照管的东西,比如自动化测试脚本,它可能会工作。如果是这种情况,您可能需要查看AutoIt等其他工具。

此建议所有从blog post我曾经写过转述。祝你好运!


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)