Solved

Advice on how to obtain HTML from a specific instance of IE running on my desktop

Posted on 2009-07-03
1
183 Views
Last Modified: 2013-12-17
I have a .NET 2.0 (C#) WinForms application running on windows desktop.  From this application, I need to access the HTML (as a string) in an instance of IE (V6/V7/V8?) also running on that desktop.  I have the window handle for the IE instance.

My question is - what is the best way to access (read-only) the HTML for the currently active page in IE (6/7/8?)?   I am aware of two methods:  

First would be to install the PIAREDIST.exe and use MSHTML.  This presents the problem of installing the PIAREDIST everywhere and i dont know if its supported in IE 7/Vista or IE 8?

Second would be to build an IE add-on.  This is more complicated for sure, but it may be more robust and better supported going forward.

Maybe there is another way?

I welcome all knowledgable advice on this.
0
Comment
Question by:RXCTO
1 Comment
 
LVL 96

Accepted Solution

by:
Bob Learned earned 500 total points
Comment Utility
Try something like this:

Add a COM reference to 'Microsoft Internet Controls' to the project.
Add a .NET reference to Microsoft.mshtml to the project.

Example:
Dictionary<string, string> windowList = InternetExplorerWindows.GetWindows()

Key = "URL", and Value = "HTML"
// Add a COM reference to 'Microsoft Internet Controls' to the project. 

// Add a .NET reference to Microsoft.mshtml to the project. 
 

// NOTE: 

// Don't add an Imports mshtml if you want your Intellisense to work. 
 

using System;

using System.Collections.Generic;

using SHDocVw;
 

public class InternetExplorerWindows

{
 

    public static Dictionary<string, string> GetWindows()

    {

        Dictionary<string, string> list = new Dictionary<string, string>();

        foreach (InternetExplorer window in new ShellWindows())

        {
 

            // Skip Windows Explorer instances, since the Document type is IShellFolderViewDual2. 

            if (window.Document is mshtml.HTMLDocument)

            {

                list.Add(window.LocationURL, ((mshtml.HTMLDocument)window.Document).body.innerHTML);

            }

        }

        return list;

    }
 

    public static Dictionary<string, string> GetIFrameHTML(string frameID)

    {

        Dictionary<string, string> list = new Dictionary<string, string>();

        foreach (InternetExplorer window in new ShellWindows())

        {
 

            // Skip Windows Explorer instances, since the Document type is IShellFolderViewDual2. 

            if (window.Document is mshtml.HTMLDocument)

            {

                mshtml.HTMLDocument doc = (mshtml.HTMLDocument)window.Document;

                if (doc.getElementById(frameID) != null)

                {

                    mshtml.HTMLIFrame frame = (mshtml.HTMLIFrame)doc.getElementById(frameID);

                    mshtml.HTMLWindow2 window2 = (mshtml.HTMLWindow2)frame.contentWindow;

                    mshtml.IHTMLDocument2 windowDocument = (mshtml.IHTMLDocument2)window2.document;

                    list.Add(window.LocationName, windowDocument.body.outerHTML);

                }

            }

        }

        return list;

    }
 

}

Open in new window

0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now