1

我在我的程序中使用此代码...

  System.Diagnostics.Process.Start("www.something.com");

它在 IE 中打开该 url。用户在页面中输入一些详细信息并单击提交按钮。浏览器将这些详细信息导航到其他页面我想在导航页面时执行一些操作...

如何捕获浏览器导航事件...

4

1 回答 1

3

您应该考虑使用 Web Browser 控件,而不是启动单独的浏览器进程。您可以导航到您想要的任何页面,捕获事件,并且通常控制整个浏览过程。


如果您尝试从 ASP.NET 或其他一些非交互式上下文中执行此操作,那么答案将非常不同

如果表单不是很复杂,那么您可以尝试使用 WebClient 发布到 URL 并阅读结果。如果事情有点复杂,请使用 WebRequest。

如果表单确实需要在浏览器中运行(可能需要 JavaScript),那么您必须在浏览器中运行它。您将无法访问在单独进程中运行的浏览器中发生的事件。而且您将无法在 ASP.NET 中运行 WebBrowser 控件。这意味着您需要做一些更复杂的事情。

我建议您按照我最初的建议编写一个简单的 Windows 窗体应用程序来托管 WebBrowser 控件。该应用程序将能够捕获事件并执行与 IE 交互所需的任何其他操作。为了使该程序与 ASP.NET 交互,我建议您让它自托管 WCF 服务。您的 ASP.NET 应用程序将使用该服务与 Winforms 应用程序进行通信,而 Winforms 应用程序又会与浏览器进行交互。

您必须强制 WCF 服务一次只处理一个请求,因为只有一个 WebBrowser 控件。如果您需要一次处理多个请求,那么您将需要创建多个 winforms 应用程序实例。

于 2013-01-09T14:05:52.637 回答