2013-04-20 58 views
1

我嘗試通過在winform應用程序的web瀏覽器控件中的鼠標鉤來記錄一些網絡活動。罕見的變化發生在點擊一個鏈接,將不記錄,只是因爲一切都發生得很快,點擊我的代碼在無法在winform中暫停webBrowser1_Navigating事件。 c#

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

方法不能達到終點。在90%的記錄發生,但一段時間後,它通過webBrowser1_Navigating事件,因爲我說通過WebBrowser1Document_Click只是開始和webBrowser1.Document.ActiveElement休息。無所謂我有變量的ActiveElement這個變量放棄作爲名稱的一些屬性的例子。所以我的問題是如何暫停webbrowser1活動,直到做出記錄。這是一個STA應用程序。

回答

1

假設導航發生在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); 
     } 
+0

非常感謝。這個想法很好。我會upvote,但它不被允許。 – 2013-04-21 06:36:59

+0

不客氣。如果您的瀏覽器比ducument_clik的第一行移動得更快,那麼您可以在點擊之前將canNavigate = false設置爲某處:) – aliassce 2013-04-21 11:30:48