Html-Elemente unter dem Mauszeiger ermitteln

// für "mshtml.IHTMLImgElement" unter Projekt->Verweise->Verweis hinzufügen->COM->Microsoft HTML Object Library hinzufügen
// benötigt wird außerdem ein WebBrowser-Steuerelement "webBrowser" auf dem Formular

// Ereignis, wenn WebBrowser ein Dokument fertig geladen hat
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (e.Url == webBrowser.Url)
    {
        // MouseMove-Event dem eben geladenen Dokument zuweisen
        webBrowser.Document.MouseMove += new HtmlElementEventHandler(Document_MouseMove);
    }
}

private void Document_MouseMove(object sender, HtmlElementEventArgs e)
{
    HtmlDocument doc = sender as HtmlDocument;

    if (doc != null)
    {
        HtmlElement el = doc.GetElementFromPoint(webBrowser.PointToClient(Control.MousePosition));

        if (el != null)
        {
            string sHTML = el.OuterHtml;

            mshtml.IHTMLImgElement htmImg = el.DomElement as mshtml.IHTMLImgElement;

            ...
        }
    }
}

Alle Bilder (IHTMLImgElement) eines HtmlDocument ermitteln

// für "mshtml.IHTMLImgElement" unter Projekt->Verweise->Verweis hinzufügen->COM->Microsoft HTML Object Library hinzufügen
// benötigt außerdem ein WebBrowser-Steuerelement
//
// Aufruf:
// List<mshtml.IHTMLImgElement-> lImages = GetImagesFromDocument(webBrowser.Document);

private List<mshtml.IHTMLImgElement-> GetImagesFromDocument(HtmlDocument doc)
{
    // Liste mit Bildern
    List<mshtml.IHTMLImgElement-> foundimages = new List<mshtml.IHTMLImgElement->();

    // alle HtmlElemente des Dokumentes durchgehen
    for (int i = 0; i < doc.All.Count; i++)
    {
        HtmlElement el = doc.All[i];

        if (el != null)
        {
            // akt. Html-Element versuchsweise zu IHTMLImgElement wandeln
            mshtml.IHTMLImgElement htmImg = el.DomElement as mshtml.IHTMLImgElement;

            // und prüfen
            if (this.IsImage(htmImg)) foundimages.Add(htmImg);
        }
    }

    return foundimages;
}

// Hilfsfunktion, um zu prüfen, ob ein IHTMLImgElement auch ein gültiges Image ist
private bool IsImage(mshtml.IHTMLImgElement htmImg)
{
    bool bRetVal = false;

    if (htmImg != null)
    {
        if (!string.IsNullOrEmpty(htmImg.fileSize))
        {
            // images mit filesize -1 sind fehlerhaft, deswegen rausfiltern
            if (int.Parse(htmImg.fileSize) -> 0)
            {
                if (!string.IsNullOrEmpty(htmImg.mimeType))
                {
                    bRetVal = true;
                }
            }
        }
    }

    return bRetVal;
}