2012-02-08 38 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事件!

我希望有幫助!