在没有聚焦的情况下打开隐藏的Internet Explorer窗口?

时间:2013-10-02 09:09:52

标签: c# internet-explorer background focus focus-stealing

我想打开一个隐藏的Internet Explorer窗口而不会窃取焦点。我有一个Timer对象,每5分钟打开一次Internet Explorer,检查网站是否有更新。问题是每次检查更新时,都会从前台的当前应用程序中窃取焦点。以下是我开始这个过程的方法:

        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 个答案:

答案 0 :(得分:1)

尝试通过其COM接口自动化Internet Explorer,而不是显式创建进程。 Here's how可以做到。只是不要ie.Visible = true,它将保持隐藏状态。完成后请致电ie.Quit()

答案 1 :(得分:0)

我甚至不确定为什么要打开浏览器来执行此操作,让代码以另一种方式检查网站会不会更容易?也许这样的事情。

        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#生锈了,所以你需要仔细检查一下。