5

我想打开一个隐藏的 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();

它总是偷走焦点,即使它是隐藏的。我希望它像什么都没有发生一样开始,所以用户可以继续他们正在做的事情。谢谢。

4

2 回答 2

1

尝试通过其 COM 接口自动化 Internet Explorer,而不是显式创建进程。这是如何做到的。只是不要这样做ie.Visible = true,它会保持隐藏状态。完成后打电话ie.Quit()

于 2013-10-02T12:37:32.320 回答
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# 生锈了,所以你需要仔细检查一下。

于 2013-10-02T18:46:05.337 回答