AutomationElement.FromHandle(IntPtr Handle) останавливает приложение

private string GetCurrentChromeUrl()
    {
        try
        {
            string url = null;

            int handle = GetForegroundWindow();
            AutomationElement elm = AutomationElement.FromHandle((IntPtr)handle);
            AutomationElement elmUrlBar = elm.FindFirst(TreeScope.Descendants,
                  new PropertyCondition(AutomationElement.NameProperty, "Address and search bar"));
            if (elmUrlBar != null)
            {
                AutomationPattern[] patterns = elmUrlBar.GetSupportedPatterns();
                if (patterns.Length > 0)
                {
                    ValuePattern val = (ValuePattern)elmUrlBar.GetCurrentPattern(patterns[0]);
                    url = val.Current.Value;
                    //break;
                }
            }
            return url;
        }
        catch (Exception e1)
        {
            return "";
        }
   }

Я пытаюсь найти URL из браузера Google Chrome.

И я использую приведенный выше код. Это хорошо работает в другом приложении, но в моем случае это останавливает мое приложение.

Но главная проблема в том, что он будет работать нормально, когда я отлаживаю его, так что не так, когда нет отладки.

Пожалуйста, дайте ваши решения.

спасибо заранее

1 ответ

Я прохожу через это, это происходит из-за типа intptr, это зависит от сборки машины, иногда дескриптор окна слишком велик для intptr 32-битной машины.

Другие вопросы по тегам