enlilbinny
enlilbinny

Reputation: 51

Opening a Hidden Internet Explorer Window without it getting Focus?

I want to open a hidden Internet Explorer window without it stealing focus. I have a Timer object that opens Internet Explorer every 5 minutes to check a website for updates. The problem is every time it checks for updates, it steals focus from the current application in the foreground. Below is how I start the process:

        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();

It always steals focus, even when it is hidden. I want it to start like nothing is happening, so users can continue to work on what they are doing. Thanks.

Upvotes: 5

Views: 5413

Answers (2)

tremor
tremor

Reputation: 3186

I'm not even sure why you would open a browser to do this, would it not be easier to have your code just check the website another way? Perhaps something like this.

        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);
        }

My C# is rusty so you'll need to double check that.

Upvotes: 0

noseratio
noseratio

Reputation: 61666

Try automating Internet Explorer via its COM interfaces rather than creating a process explicitly. Here's how it can be done. Just don't do ie.Visible = true and it will stay hidden. Call ie.Quit() when done with it.

Upvotes: 1

Related Questions