Chrome_AutocompleteEditView于2013年7月从Chrome浏览器中消失

时间:2013-09-25 14:46:43

标签: google-chrome findwindow

从2011年到2013年7月,我一直在使用FindWindowEx从Chrome浏览器获取有关当前网址的数据。今天25.09.2013,我注意到Chrome_AutocompleteEditView类消失了...我的当前Chrome版本是29.0.1547.76 你们当中有没有人知道我现在怎么读这个网址呢? 在我的代码下面 感谢

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

1 个答案:

答案 0 :(得分: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;
        }
    }
}

但这不是我想要的。 这段代码可以运行,但它仍然可以从chrome获取URL慢... 2秒甚至3有时。
我注意到,当我将TreeScope.Descendant更改为TreeScope.Children时,此代码开始运行lika a flash :)但返回null - 没有找到。
有什么想法?