2014-03-12 152 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似乎工作更快一點,雖然我沒有執行定時測試或任何東西。

相關問題