gpt4 book ai didi

c# - 获取 Firefox 网址

转载 作者:行者123 更新时间:2023-11-30 12:18:32 26 4
gpt4 key购买 nike

我需要知道用户当前所在的 URL。(使用 Firefox)
我想到了一个键盘记录器来跟踪 URL,但是当用户单击链接时会怎样?

标题不够,我要完整的网址。
对于 IE,这很容易,但对于 Firefox 则不然。
对于我正在使用的 IE:

private string GetUrlFromIE()
{
IntPtr windowHandle = GetForegroundWindow();
IntPtr childHandle;
String strUrlToReturn = "";

//IE's toolbar container
childHandle = FindWindowEx(windowHandle,IntPtr.Zero,"WorkerW",IntPtr.Zero);
if(childHandle != IntPtr.Zero)
{
//get a handle to address bar
childHandle = FindWindowEx(childHandle,IntPtr.Zero,"ReBarWindow32",IntPtr.Zero);
if(childHandle != IntPtr.Zero)
{
// get a handle to combo boxes
childHandle = FindWindowEx(childHandle, IntPtr.Zero, "ComboBoxEx32", IntPtr.Zero);
if(childHandle != IntPtr.Zero)
{
// get a handle to combo box
childHandle = FindWindowEx(childHandle, IntPtr.Zero, "ComboBox", IntPtr.Zero);
if(childHandle != IntPtr.Zero)
{
//get handle to edit
childHandle = FindWindowEx(childHandle, IntPtr.Zero, "Edit", IntPtr.Zero);
if (childHandle != IntPtr.Zero)
{
strUrlToReturn = GetText(childHandle);
}
}
}
}
}
return strUrlToReturn;
}

有什么想法吗?

最佳答案

您可以使用 Windows IAccessible 界面获取 URL。

为了方便 IAccessible 操作,我建议使用 Managed Windows API 图书馆。你应该事先有 FireFox 窗口句柄。

这是从 FireFox 抓取 URL 的 C# 代码:

    private static string GetUrlFromFirefox(IntPtr windowHandle)
{
SystemAccessibleObject sao = SystemAccessibleObject.FromWindow(new SystemWindow(windowHandle), AccessibleObjectID.OBJID_WINDOW);
var preds = new Predicate<SystemAccessibleObject>[] {
s => s.RoleString == "application",
s => s.RoleString == "property page",
s => s.RoleString == "grouping" && s.StateString == "None",
s => s.RoleString == "property page" && s.StateString == "None",
s => s.RoleString == "browser",
s => s.RoleString == "document" && s.Visible
};

var current = sao.Children;
SystemAccessibleObject child = null;
foreach (var pred in preds)
{
child = Array.Find(current, pred);
if (child != null)
{
current = child.Children;
}
}

if (child != null)
{
return child.Value;
}

return string.Empty;
}

这适用于 FireFox 14。

关于c# - 获取 Firefox 网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com