Ebikeneser
Ebikeneser

Reputation: 2364

Stop process if webBrowser control hangs

I am using the WebBrowser control.

This works fine most of the time however wehn navigating to a new page or waiting for a new page to load can sometimes hangs.

Is there a way to catch this? i.e. if the page is failing to navigate or load after a certain amount of time then kill the process?

I am using the - webBrowser1_DocumentCompleted event to pick up ertain behaviours when the page loads/navigates as expected however not sure how to catch if a page is hanging??

Upvotes: 1

Views: 715

Answers (2)

Padhu
Padhu

Reputation: 1580

This is due to that webbrowser component is very basic model of internet explorer, and it get stuck at ajax pages. You can fix this problem explicitly to use latest version of internet explorer... Using this code...

       try
        {
            string installkey = @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
            string entryLabel = "YourExe.exe";
            string develop = "YourExe.vshost.exe";//This is for Visual Studio Debugging... 
            System.OperatingSystem osInfo = System.Environment.OSVersion;

            string version = osInfo.Version.Major.ToString() + '.' + osInfo.Version.Minor.ToString();
            uint editFlag = (uint)((version == "6.2") ? 0x2710 : 0x2328); // 6.2 = Windows 8 and therefore IE10

            Microsoft.Win32.RegistryKey existingSubKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(installkey, false); // readonly key

            if (existingSubKey.GetValue(entryLabel) == null)
            {
                existingSubKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(installkey, true); // writable key
                existingSubKey.SetValue(entryLabel, unchecked((int)editFlag), Microsoft.Win32.RegistryValueKind.DWord);
            }
            if (existingSubKey.GetValue(develop) == null)
            {
                existingSubKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(installkey, true); // writable key
                existingSubKey.SetValue(develop, unchecked((int)editFlag), Microsoft.Win32.RegistryValueKind.DWord);
            }
        }
        catch
        {
            MessageBox.Show("You Don't Have Admin Previlege to Overwrite System Settings");
        }
    }

Right Click Both your Exe. And vshost.exe and Run as Administrator To Update Registry for this Application....

Upvotes: 0

steavy
steavy

Reputation: 1576

Maby you should try to implement some kind of timeout logic? There are quite many samples in web about this. F.e. this one

Also you might be interested in this event of WebBrowserControl ProgressChanged

Upvotes: 1

Related Questions