C#:打开浏览器并从windows桌面应用程序发布到url
我有一个小的WPF应用程序(尽管我想它是WPF表单还是webform应用程序并不重要),我想启动一个新的浏览器窗口并发布到特定的url。我一直在胡闹:C#:打开浏览器并从windows桌面应用程序发布到url,c#,wpf,browser,post,C#,Wpf,Browser,Post,我有一个小的WPF应用程序(尽管我想它是WPF表单还是webform应用程序并不重要),我想启动一个新的浏览器窗口并发布到特定的url。我一直在胡闹: System.Diagnostics.Process.Start("http://myurl.com"); 启动窗口,但我不认为我可以使用相同的过程来实际发布到url…我也尝试过HttpWebRequest,但我希望用户能够在我发布到该url后使用该应用程序,不只是向他们展示结果……我可以看什么来做这样的事情?没有直接的方法。您可以做的是生成一
System.Diagnostics.Process.Start("http://myurl.com");
启动窗口,但我不认为我可以使用相同的过程来实际发布到url…我也尝试过HttpWebRequest,但我希望用户能够在我发布到该url后使用该应用程序,不只是向他们展示结果……我可以看什么来做这样的事情?没有直接的方法。您可以做的是生成一个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>
函数submitForm(){
var theForm=document.getElementById(“theForm”);
submit()格式;
}
如果页面必须显示在应用程序中,请将其加载到
WebBrowser
控件中,而不要使用。您可以创建隐藏控件并执行(使用允许您指定请求方法的重载)。您需要指定一个“空白”目标框,以便在新的浏览器窗口中进行导航。有多种解决方案,不确定哪种方案最适合您
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();
}
- URL1:
- URL2:javascript:function x(){document.all.q.value='stackoverflow';document.forms[0].submit();}x()李>
Process.Start()
在浏览器中打开它。它比按键更健壮,并且可以在用户选择为默认的任何体面浏览器上工作。