5

私のWebブラウザが多くのボタンがあるhtmlページを表示していると仮定します。C#WinアプリからWebブラウザーコントロール内の任意のボタンのクリックをキャプチャする方法を知りたいだけです。

可能であれば、そのイベントから、ボタンの名前、高さ、幅、およびカスタムプロパティをキャプチャします。など。ご案内ください。

4

1 に答える 1

11

これは、マウスクリックのみをキャプチャする場合に役立ちます。

WebBrowser _browser;
this._browser.DocumentCompleted+=new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
...
private void browser_DocumentCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e)
{
    this._browser.Document.Body.MouseDown += new HtmlElementEventHandler(Body_MouseDown);
}
...
void Body_MouseDown(Object sender, HtmlElementEventArgs e)
{
    switch(e.MouseButtonsPressed)
    {
    case MouseButtons.Left:
        HtmlElement element = this._browser.Document.GetElementFromPoint(e.ClientMousePosition);
        if(element != null && "submit".Equals(element.GetAttribute("type"),StringComparison.OrdinalIgnoreCase)
        {
        }
    break;
    }
}

Webブラウザコントロール内にロードされたhtml要素のカスタム属性を読み取る方法を教えてください。ありがとう

「Microsoft.mshtml」にリンクしたくない場合は、このサンプルメソッドを使用してみてください。しかし、リフレクションを通じてすべてのメンバーを読むことはできません。

public static String GetElementPropertyValue(HtmlElement element, String property)
{
    if(element == null)
        throw new ArgumentNullException("element");
    if(String.IsNullOrEmpty(property))
        throw new ArgumentNullException("property");

    String result = element.GetAttribute(property);
    if(String.IsNullOrEmpty(result))
    {//В MSIE 9 получить свойство через DomElement не получается. Т.к. там он ComObject.
        var objProperty = element.DomElement.GetType().GetProperty(property);
        if(objProperty != null)
        {
            Object value = objProperty.GetValue(element.DomElement, null);
            result = value == null ? String.Empty : value.ToString();
        }
    }
    return result;
}
于 2013-02-18T10:44:50.103 に答える