![](/img/trans.png)
[英]Open Browser from C# Desktop Application and catch parameters in webpage
[英]C#: Open a browser and POST to a url from a windows desktop app
我有一個小型的WPF應用程序(雖然我認為無論是wpf表單還是webform應用程序並不重要?)我想要啟動一個新的瀏覽器窗口並POST到特定的URL。 我一直在搞亂:
System.Diagnostics.Process.Start("http://myurl.com");
啟動窗口,但我不認為我可以使用相同的過程實際發布到網址...我也嘗試過HttpWebRequest但我希望用戶能夠在發布到我之后使用該應用程序這個網址,不只是向他們展示結果......我能看到什么才能做到這樣的事情?
沒有直接的方法可以做到這一點。 您可以做的是生成一個HTML頁面,其中的表單中填充了您需要發布的數據,以及一些javascript,以便在加載時自動發布頁面。 然后你只需要在瀏覽器中打開該頁面......
生成的HTML可能如下所示:
<html>
<head>
<script language="Javascript">
function submitForm() {
var theForm = document.getElementById("theForm");
theForm.submit();
}
</script>
</head>
<body onload="submitForm()">
<form id="theForm" action="http://myurl.com" method="POST">
<input type="text" name="username" value="myusername"/>
<input type="password" name="password" value="mypassword"/>
</form>
</body>
</html>
如果必須在應用程序中顯示該頁面,請將其加載到WebBrowser
控件中
請改用WebBrowser類 。
您可以創建隱藏的WebBrowser
控件並執行Navigate()
(使用允許您指定請求方法的重載)。 您需要指定一個“_blank”目標框架,以便在新的瀏覽器窗口中進行導航。
有多種解決方案,不確定哪一種最適合您......
對於#3,你可能想看這里: http : //geekswithblogs.net/rakker/archive/2006/04/21/76044.aspx
如果你想使用#1 - 它更棘手,因為你需要控制外部應用程序,不同的瀏覽器會表現不同。
在處理一個“用戶不友好”的應用程序時,我使用了“javascript:”協議和IE下面的代碼作為默認瀏覽器。 請注意,它不是“生產就緒”代碼。 沒有錯誤處理,用戶可能會將焦點從啟動的瀏覽器轉移,或使用沒有“javascript:”協議支持等的瀏覽器。
static void Main()
{
Settings s = Settings.Default;
Process.Start(s.URL1);
Thread.Sleep(s.Delay1);
SendKeys.SendWait("%D");
Thread.Sleep(100);
SendKeys.SendWait(EncodeForSendKey(s.URL2));
SendKeys.SendWait("{ENTER}");
}
public static string EncodeForSendKey(string value)
{
StringBuilder sb = new StringBuilder(value);
sb.Replace("{", "{{}");
sb.Replace("}", "{}}");
sb.Replace("{{{}}", "{{}");
sb.Replace("[", "{[}");
sb.Replace("]", "{]}");
sb.Replace("(", "{(}");
sb.Replace(")", "{)}");
sb.Replace("+", "{+}");
sb.Replace("^", "{^}");
sb.Replace("%", "{%}");
sb.Replace("~", "{~}");
return sb.ToString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.