我正在尝试使用C#从Chrome网页浏览器33版获取网址。我已经看过并尝试了不同的建议 - 但到目前为止还没有运气。
我尝试过的事情: AutomationElement - > Getting the current tab's URL from Google Chrome using C# "地址和搜索栏"在33版Chrome网络浏览器中使用自动化无法找到元素。 我也尝试过使用TreeWalker,这些是我找到的唯一元素:
横向滚动条
少量退货
少量转发
垂直滚动条
少量退货
少量转发
"网页标题......"
系统菜单栏
系统
最小化
恢复
关闭
NDde - > Retrieve current URL from C# windows forms application
NDde.Client.DdeClient dde = new NDde.Client.DdeClient("Chrome", "WWW_GetWindowInfo");
dde.Connect();
NDde.Client.DdeClient dde = new NDde.Client.DdeClient("Chrome", "Chrome_OmniboxView");
dde.Connect();
两者都无效......无法连接。
FindWindowEx - >
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
public string GetChromeUrl(Process process)
{
IntPtr handle = IntPtr.Zero;
Process[] procsChrome = Process.GetProcessesByName("chrome");
foreach (Process chrome in procsChrome)
{
// the chrome process must have a window
if (chrome.MainWindowHandle == IntPtr.Zero)
{
continue;
} else
{
handle = chrome.MainWindowHandle;
break;
}
}
IntPtr urlHandle = FindWindowEx(handle, IntPtr.Zero, null, "Address and search bar");
if (urlHandle != IntPtr.Zero)
{
Console.WriteLine("yes!");
}
return "";
}
不能......
我走了多远
所以我使用了UI Spy并检查以查找Chrome 33中的多功能框的名称。 在UI间谍中根本无法找到它,但是在检查中我找到了"地址和搜索栏",它具有我追求的网址值...问题是我如何获得持有那个网址信息?
有什么想法吗?
答案 0 :(得分:1)
从 AutomationElement 链接不确定自动化路线在Chrome 33中无效的原因;我在Chrome 35中实现了它,它确实可以正常工作。一定要使用第一个实现,据说需要350毫秒才能找到URL。此外,我发现使用 TreeScope.Subtree 而不是 TreeScope.Descendants 似乎工作得更快,尽管我还没有进行定时测试或其他任何事情。
答案 1 :(得分:-1)