我有一个小的WPF应用程序(虽然我想它是一个wpf表单还是一个webform应用程序并不重要?),我想让它启动一个新的浏览器窗口并发布到一个特定的url。
System.Diagnostics.Process.Start("http://myurl.com");
来启动窗口,但我不认为我可以使用相同的过程来实际发布到URL...我也尝试过HttpWebRequest,但我希望用户能够在我发布到该URL后使用该应用程序,而不仅仅是向他们显示结果...我可以查看哪些内容来执行此类操作?
6l7fqoea1#
没有直接的方法可以做到这一点。你可以做的是生成一个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
3df52oht2#
请改用WebBrowser Class。
p8h8hvxi3#
有多种解决方案,不确定哪一种最适合您...1.继续你原来的方法1.按照其他答案中的建议在应用程序中嵌入Web浏览器控件1.以编程方式“在后台”执行所有操作对于#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(); }
t1qtbnec4#
您可以创建一个隐藏的WebBrowser控件并执行Navigate()(使用允许您指定请求方法的重载)。您将需要指定一个“_blank”目标框架以使导航在新的浏览器窗口中发生。
Navigate()
4条答案
按热度按时间6l7fqoea1#
没有直接的方法可以做到这一点。你可以做的是生成一个HTML页面,其中包含一个填写了你需要发布的数据的表单,并使用一点javascript在页面加载时自动发布页面。然后你只需要在浏览器中打开该页面...
生成的HTML可能如下所示:
如果必须在应用程序中显示该页,请将其加载到
WebBrowser
控件中3df52oht2#
请改用WebBrowser Class。
p8h8hvxi3#
有多种解决方案,不确定哪一种最适合您...
1.继续你原来的方法
1.按照其他答案中的建议在应用程序中嵌入Web浏览器控件
1.以编程方式“在后台”执行所有操作
对于#3,您可能需要查看此处:http://geekswithblogs.net/rakker/archive/2006/04/21/76044.aspx
如果你想去#1 -这是更棘手的,因为你需要控制外部应用程序和不同的浏览器会表现不同。
我使用“javascript:“协议和下面的代码与IE作为默认浏览器时,处理一个“用户不友好”的应用程序。请注意,这不是“生产准备”的代码。没有错误处理,用户可能会转移焦点从启动的浏览器,或使用浏览器没有“javascript:“协议支持等。
t1qtbnec4#
您可以创建一个隐藏的
WebBrowser
控件并执行Navigate()
(使用允许您指定请求方法的重载)。您将需要指定一个“_blank”目标框架以使导航在新的浏览器窗口中发生。