1

我尝试通过 winform 应用程序中 webbrowser 控件中的鼠标挂钩记录一些互联网活动。很少发生点击链接并且不记录该点击只是因为一切发生得太快而我的代码在

public void WebBrowser1Document_Click(object sender, HtmlElementEventArgs e)
        {    
            tempHtmlElement = webBrowser1.Document.ActiveElement;
            ...

方法无法到达终点。在 90% 的记录中发生了,但有时它会webBrowser1_Navigating在之后通过事件,正如我所说WebBrowser1Document_Click的,它只是开始并webBrowser1.Document.ActiveElement中断。没关系,我有 ActiveElement 的变量,这个变量失去了对某些属性的访问权限,例如 Name。所以我的问题是如何暂停 webbrowser1 活动,直到记录完成。这是一个 STA 应用程序。

4

1 回答 1

1

假设 Navigation 在 Click 方法完成之前发生,您可以通过一个棘手的方法暂停。使用全局变量 CanNavigate。

bool canNavigate;
public void WebBrowser1Document_Click(object sender, HtmlElementEventArgs e)
        {    
            canNavigate=false;
            tempHtmlElement = webBrowser1.Document.ActiveElement;
            ...
            ...
            //At the End 
            canNavigate=true;
         }




    void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            do
            {
Application.DoEvents(); Thread.Sleep(100);

            } while (!canNavigate);
        }
于 2013-04-20T23:56:43.987 回答