2014-03-12 105 views
4

我想从Chrome浏览器版本33 - 使用C#获取网址。我在这里看过并尝试过不同的建议 - 但到目前为止还没有运气。从Chrome网页浏览器获取网址

事情我已经尝试: 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间谍和检查,以查找Chrome 33中多功能框的名称。 在UI间谍中根本找不到,但在检查中我找到了“地址和搜索栏”,它具有我在...后的url值问题是我如何获得该网址信息?

有什么想法?

回答

-1

你有没有试过从API中获取它?

getURL - string chrome.runtime。的getURL(字符串路径)

这里是链接到源:Link to API

+0

-1:API在C#中工作吗? –

1

不知道为什么自动化路线并没有在Chrome 33的工作,从您的AutomationElement链接;我在Chrome 35中实现了它,并且它工作正常。一定要使用第一个实现,这应该需要350毫秒来找到网址。此外,我发现使用TreeScope.Subtree而不是TreeScope.Descendants似乎工作更快一点,虽然我没有执行定时测试或任何东西。

相关问题