2012-02-08 63 views
0

我得写一个.NET Windows窗体应用程序将打开一个网页,然后可以向相应网页上的某些链接用户点击反应。我给出的规范在网页上的链接只是http链接。听在Windows HTTP请求窗体应用程序

是否有我的.NET应用程序的方式对它有一个最小的Web服务器,这将允许它处理特定的端口上的http请求?

+1

您可能需要在此澄清您的目标。 Windows窗体应用程序将包含一个“WebBrowser”控件,它将显示所需的网页?_user_会使用您的Windows窗体应用程序来浏览网页吗?你对哪些“某些”类型的链接感兴趣? – LiquidPony 2012-02-08 14:52:18

+1

[HttpListener](http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx)应该为你工作。 – 2012-02-08 14:56:30

回答

0

根据您需要的功能,有不同的方法来做到这一点。如果您只需响应点击事件,并且您不需要“完整的”http协议支持,则只需打开套接字并解析浏览器中的内容即可。

或者,你可以使用HttpListener,这需要http协议解析对您的关心,是比较容易使用。对于我认为你需要的,这可能是首选的方法。简单的非编译示例如下:https://gist.github.com/1770645

“圣杯”是托管在Windows ASP.NET运行时窗体应用程序。我已经完成了这项工作,并且涉及很多。运行时必须托管在一个独立的AppDomain中,所以你最终会跳过很多环节,让所有的东西都运行起来并且连接起来。它还涉及编写一个更完整的HttpWorkerRequest的实现,该框架提供了SimpleWorkerRequest。顺便说一句,这也适用于Windows服务,这为您提供了一种很好的方式来通过浏览器提供服务管理和监控,而不依赖于IIS。

+0

另外,WCF端点也可以驻留在Forms应用程序中。 – 2012-02-08 16:02:39

0

我有不同的解释这个问题给其他用户,所以也许我的路要走,但是,我读它,因为他正试图使从web网页和反应,用户点击网页中的链接。

我能想到做到这一点的唯一方法是通过使用某种形式的渲染器,即webkit并挂钩到拦截用户所做的点击。

1

如果你需要的是显示一个网页,并且你没有在使用,那么WebBrowser控制就可以了浏览器的任何限制。

  1. 拖动它到您的形式
  2. Url属性,你需要显示
  3. 附加到Navigating事件

您现在可以响应点击,取消他们的页面,做任何你喜欢的事情。如果它只是响应您需要的客户端点击,则不需要Web服务器。如果你需要一个网络服务器,WinForms不应该与它有任何关系。

webBrowser1.Navigating += new WebBrowserNavigatingEventHandler(webBrowser1_Navigating); 

private void webBrowser1_Navigating(object sender, 
    WebBrowserNavigatingEventArgs e) 
{ 
    //Do your thing... maybe set e.Cancel if you don't to navigate 
} 
1

请看WebBrowser控件,并明确了 “ObjectForScripting” 属性。如果你将它设置为父窗体,你实际上可以在你的c#代码中从webbrowser中加载的页面处理javascript事件!

我希望有帮助!