2013-09-25 52 views
0

從2011年到2013年7月,我一直在使用FindWindowEx從Chrome瀏覽器獲取有關當前網址的數據。今天25.09.2013,我注意到Chrome_AutocompleteEditView類已經不存在了...我的currrent Chrome版本是29.0.1547.76 你有沒有人知道我現在怎麼讀這個網址?
下面我的代碼
感謝Chrome_AutocompleteEditView 2013年7月從Chrome瀏覽器中去除

IntPtr handle = getforegroundWindow();IntPtr urlHandle = FindWindowEx(handle, IntPtr.Zero, "Chrome_AutocompleteEditView", null);

回答

0

我的問題已經解決

using System; 
using System.Drawing; 
using System.ComponentModel; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 
using System.Collections.Generic; 
using System.Data; 
using System.Diagnostics; 
using System.Windows.Automation; 
namespace ui_automation 
{ 
    /// <summary> 
    /// Description of MainForm. 
    /// </summary> 
    public partial class MainForm : Form 
    { 
     public MainForm() 
     { 
      InitializeComponent(); 
      foreach (Process process in Process.GetProcessesByName("chrome")) 
      { 
       string url = GetChromeUrl(process); 
       if (url == null) 
        continue; 
       MessageBox.Show(url); 
      } 
     } 
     public static string GetChromeUrl(Process process) 
     { 
      string out_url = null; 
      if (process == null) { 
       out_url = null; 
      } else if (process.MainWindowHandle == IntPtr.Zero) { 
       out_url = null; 
      } else { 
       AutomationElement element = AutomationElement.FromHandle(process.MainWindowHandle); 
       if (element == null) 
        return null; 
       Condition conditions = new AndCondition(
        new PropertyCondition(AutomationElement.ProcessIdProperty, process.Id), 
        new PropertyCondition(AutomationElement.IsControlElementProperty, true), 
        new PropertyCondition(AutomationElement.IsContentElementProperty, true), 
        new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit) 
       ); 
       AutomationElement elementx = element.FindFirst(TreeScope.Descendants, conditions); 
       out_url = ((ValuePattern)elementx.GetCurrentPattern(ValuePattern.Pattern)).Current.Value as string; 
      } 
      return out_url; 
     } 
    } 
} 

但是,這不是我想要的exaclty。 此代碼可以正常工作,但它仍然會從Chrome瀏覽器的網址緩慢移動... 2秒甚至3次。
我注意到,當我將TreeScope.Descendant更改爲TreeScope.Children時,此代碼開始運行lika flash :)但返回null - 找不到。
有什麼建議嗎?

相關問題