如何从任何打开的浏览器中的任何选项卡获取URL
我正在尝试检测用户正在查看的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我曾经写过转述。祝你好运!
回答:
你不可能找到这样的答案。所有现代浏览器都会限制JavaScript在页面上访问此类信息的能力,因为它会给用户带来如此大的隐私风险。
回答:
刚刚送走我的头顶,你可能会考虑使用内置Firefox的语言(不知道它叫什么)。我相信它提供了一种机制来确切地说明你在说什么。否则,那些为美味等写的插件将无法使用。
至于IE,你将需要可以做它在C++或者找一些这方面的托管包装。我不知道如何制作一个IE插件,但如果你深入挖掘,你应该能够找到一些东西。
干杯!
回答:
在Javascript中使用ActiveX shell应用程序对象的IE相当容易。下面是示例代码:
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。
以上是 如何从任何打开的浏览器中的任何选项卡获取URL 的全部内容, 来源链接: utcz.com/qa/260644.html