Открывать скрытое окно Internet Explorer без получения Фокуса?

Я хочу открыть скрытое окно Internet Explorer без кражи фокуса. У меня есть объект Timer, который открывает Internet Explorer каждые 5 минут, чтобы проверить веб-сайт на наличие обновлений. Проблема в том, что каждый раз, когда он проверяет наличие обновлений, он крадет фокус у текущего приложения на переднем плане. Ниже показано, как я запускаю процесс:

        Process m_Proc = new Process();
        m_Proc.StartInfo.Arguments = String.Format("{0}{1}", "-nomerge ", browserURL);
        m_Proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        m_Proc.StartInfo.UseShellExecute = true;
        m_Proc.StartInfo.CreateNoWindow = true;
        m_Proc.StartInfo.FileName = String.Format("iexplore.exe");
        m_Proc.Start();

Он всегда крадет фокус, даже когда он скрыт. Я хочу, чтобы это началось, как будто ничего не происходит, чтобы пользователи могли продолжать работать над тем, что они делают. Благодарю.

2 ответа

Попробуйте автоматизировать Internet Explorer через его COM-интерфейсы, а не создавать процесс явно. Вот как это можно сделать. Просто не делай ie.Visible = true и это останется скрытым. Вызов ie.Quit() когда закончите с этим.

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

        string url = "http://www.google.com";
        string result = null;
        try
        {
            WebClient client = new WebClient();
            result = client.DownloadString(url);
            //Store this result and compare it to last stored result for changes.         
        }
        catch (Exception ex)
        {
            // handle error
            MessageBox.Show(ex.Message);
        }

Мой C# ржавый, поэтому вам нужно проверить это дважды.

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